Вопросы:
Каковы наилучшие функции safe1(), safe2(), safe3() и safe4(), чтобы избежать XSS для страниц с кодировкой UTF8? Это также безопасно во всех браузерах (в частности, в IE6)?
<body><?php echo safe1($xss)?></body>
<body id="<?php echo safe2($xss)?>"></body>
<script type="text/javascript">
var a = "<?php echo safe3($xss)?>";
</script>
<style type="text/css">
.myclass {width:<?php echo safe4($xss)?>}
</style>
.
Многие говорят, что лучшее, что можно сделать, это:
// safe1 & safe2
$s = htmlentities($s, ENT_QUOTES, "UTF-8");
// But how would you compare the above to:
// https://github.com/shadowhand/purifier
// OR http://kohanaframework.org/3.0/guide/api/Security#xss_clean
// OR is there an even better if not perfect solution?
.
// safe3
$s = mb_convert_encoding($s, "UTF-8", "UTF-8");
$s = htmlentities($s, ENT_QUOTES, "UTF-8");
// How would you compare this to using using mysql_real_escape_string($s)?
// (Yes, I know this is a DB function)
// Some other people also recommend calling json_encode() before passing to htmlentities
// What's the best solution?
.
Есть чертовски много сообщений о PHP и XSS. Большинство просто говорят «используйте HTMLPurifier» или «используйте htmlspecialchars» или ошибаются. Другие говорят, что используйте OWASP, но это ЧРЕЗВЫЧАЙНО медленно. Ниже перечислены некоторые из хороших постов, с которыми я столкнулся:
Выполните htmlspecialchars и mysql_real_escape_string защитить мой PHP-код от инъекций?
var a = "<?php echo safe3($xss)?>";
вам также нужно удалить все символы новой строки. - person zerkms   schedule 13.05.2011