venetu
Мой дом здесь!
- Регистрация
- 28 Мар 2007
- Сообщения
- 745
- Реакции
- 273
Для mysql есть отличная ВСТРОЕННАЯ функция mysql_real_escape_string()
которая позволяет полностью забить на всякие кавычки и не парить себе голову..
Вот тут толково написано про то почему нужно использовать именно ее и как можно обойти addslashes() - если кто-то думает, что взять строку в кавычки будет достаточно.
Насчет остальных двух случаев (т.е. когда юзерский текст идет не в sql, а в выводимый html) то тут самая простая и бронелобая защита выглядит так:
Вторую скобку (т.е. правую, ">") менять не обязательно.
Опять же, это ПОЛНОСТЬЮ избавляет от всех возможных инжекшенов.
А вот если хочется юзеру разрешить вставлять некоторые теги но запретить остальные - то тут начинается самое шаманство.. Дашь вставлять <b><i><u> - вставит <b onmouseover=...> запретишь маусовер - вставит style="expression. и так далее. Целая история, короче. Тут уже придется использовать kses или htmltidy. Ищи в гугле по этим словам.
которая позволяет полностью забить на всякие кавычки и не парить себе голову..
Вот тут толково написано про то почему нужно использовать именно ее и как можно обойти addslashes() - если кто-то думает, что взять строку в кавычки будет достаточно.
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
Насчет остальных двух случаев (т.е. когда юзерский текст идет не в sql, а в выводимый html) то тут самая простая и бронелобая защита выглядит так:
PHP:
$txt = str_replace('<','<',$txt);
Опять же, это ПОЛНОСТЬЮ избавляет от всех возможных инжекшенов.
А вот если хочется юзеру разрешить вставлять некоторые теги но запретить остальные - то тут начинается самое шаманство.. Дашь вставлять <b><i><u> - вставит <b onmouseover=...> запретишь маусовер - вставит style="expression. и так далее. Целая история, короче. Тут уже придется использовать kses или htmltidy. Ищи в гугле по этим словам.