PDA

Просмотр полной версии : Какие есть минусы у htmlentities?


strecher
15.05.2009, 17:40
Есть ли какие либо проблемы с использованием данного кода для фильтрации запросов? Если да, то какие. Использую PHP + MySQL.
В данный момент это самый безопасный (инхо) метод фильтрации запросов который я нашёл. Инклуд в начало каждого скрипта который обрабатывает запросы.
Спасибо.

function antixss($str) {
$str = htmlentities($str, ENT_QUOTES);
return $str;
}

foreach($_POST as $name => $value) {
$_POST[$name] = antixss($value);}
foreach($_GET as $name => $value) {
$_GET[$name] = antixss($value);}

P.S. Если минусов нет, то почему все не пользуются этой функцией?

Dimi4
15.05.2009, 17:46
самое банальное, если у тебя запрос типа:

SELECT * from table where id=$_GET['id']

то толку от твоей функции ноль

А также если в скрипте юзаются бинарно зависимые функции, она не спасет. Например инклуд (на %00 не отреагирует)

Sharky
15.05.2009, 17:51
лучше уж тогда htmlspecialchars

Dimi4
15.05.2009, 18:04
От хсс тоже не всегда спасет. Представим что у тебя скрипт обрабатывает этой функцией бб коды.
например:
[colo r=$_GET['color']]$_GET['text'][/ color]
превращается в
<font style="color: $_GET['color']">$_GET['text']</font>
Вот хсс:

[colo r=green; background:url\(javascript:eval(alert(1))]qe[/ color]
будет:

<font style="color: green; background:url\(javascript:eval(alert(1)))">qe</font>

astrologer
15.05.2009, 18:15
Про "фильтрацию" есть прикреплённая тема: статья про анти sql-inj (https://forum.antichat.ru/thread30641.html).

nerezus
15.05.2009, 18:45
P.S. Если минусов нет, то почему все не пользуются этой функцией? Потому что это бред полный.
Ты портишь входящие данные.

Данные портить нельзя. Данные надо правильно использовать.