[help] Фильтрация GET данных

Статус
В этой теме нельзя размещать новые ответы.
Для mysql есть отличная ВСТРОЕННАЯ функция mysql_real_escape_string()
которая позволяет полностью забить на всякие кавычки и не парить себе голову..

Вот тут толково написано про то почему нужно использовать именно ее и как можно обойти addslashes() - если кто-то думает, что взять строку в кавычки будет достаточно.


Насчет остальных двух случаев (т.е. когда юзерский текст идет не в sql, а в выводимый html) то тут самая простая и бронелобая защита выглядит так:

PHP:
$txt = str_replace('<','&lt;',$txt);
Вторую скобку (т.е. правую, ">") менять не обязательно.

Опять же, это ПОЛНОСТЬЮ избавляет от всех возможных инжекшенов.

А вот если хочется юзеру разрешить вставлять некоторые теги но запретить остальные - то тут начинается самое шаманство.. Дашь вставлять <b><i><u> - вставит <b onmouseover=...> запретишь маусовер - вставит style="expression. и так далее. Целая история, короче. Тут уже придется использовать kses или htmltidy. Ищи в гугле по этим словам.
 
Получается, чтобы полностью обезопаситься от SQL-инъекций, достаточно просто вызывать mysql_real_escape_string() и заключать значение в кавычки ? Почему тогда написано так много информации по этим инъекциям, если все так просто =/

А числовое значение следует заключать в кавычки ?

Ну а насчет использования тегов <b><i><u>. Тут впринципе ничего сложного. Самым лучшим решением будет дать возможность использования бб-кодов, которые будут менять их на теги (тут надо не просто заменять [ на <, а заменять целые коды). Ну а также можно просто разрешить выражение <b> (именно только <b>, без каких-либо параметров).

Насчет остальных двух случаев (т.е. когда юзерский текст идет не в sql, а в выводимый html) то тут самая простая и бронелобая защита выглядит так:

PHP:
$txt = str_replace('<','&lt;',$txt);
именно этой фразы я и добивался две страницы...
 
Сообщение от venetu
Насчет остальных двух случаев (т.е. когда юзерский текст идет не в sql, а в выводимый html) то тут самая простая и бронелобая защита выглядит так:

PHP код:
$txt = str_replace('<','&lt;',$txt);

я бы сказал strip_tags или html_special_chars , т.к. смотри
XSS никто не отменял
 
html_special_chars() делает то же самое, что я написал (т.е. меняет '<' на '&lt;') плюс заменяет еще с десяток символов по тому же принципу. К теме хака не относящихся, но все равно наверное полезных.

Про strip_tags() я где-то встречал, что оно не совсем safe и типа тоже можно обойти. Не знаю как, и не знаю, насколько это вообще серьезно.

Может там какими-то "<scr<script>ipt>" или "<img src=>" (броузер последнюю скобочку понимает как атрибут src, а не как закрытие тега img, а вот тот же kses на этом спотыкается..) Хрен его знает.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху