Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Защита от XSS


Автор: bagos 15.10.2011, 13:41
Уважаемые, поделитесь ссылками, информацией как защититься от xss. Похоже неправильно ищу или не то в поиске забиваю.

Автор: Absinthe 15.10.2011, 14:16
bagos, правильным образом экранировать данные. В зависимости от контекста.

Автор: $дмитрий 15.10.2011, 14:17
http://zhilinsky.ru/2008/05/08/anti-xss-script/

Автор: bagos 15.10.2011, 14:18
Благодарю за ответы, по инфе что находил в инете, понял так что одного экранирования символов не достаточно.
Вот поэтому пришел сюда с вопросами.

Добавлено через 9 минут и 31 секунду
Вы хотите сказать что функций htmlspecialchars,htmlentities,stripslashes,mysql_real_escape_string  будет достаточно?

Автор: Absinthe 15.10.2011, 16:56
Цитата

http://zhilinsky.ru/2008/05/08/anti-xss-script/
 Никогда не читайте статьи, где глупый автор рекомендует писать гoвнокод. Это одна из них.
Таких отличить просто: они думают, что умнее, чем разработчики PHP, и могут "изобрести волшебную функцию, делающую все включая минет".
Никогда такой функции "защитить от уязвимостей" не будет. Не возможно. Точка.

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

Цитата

Вы хотите сказать что функций htmlspecialchars,htmlentities,stripslashes,mysql_real_escape_string  будет достаточно?
 НЕТ!


Итак. 
stripslashes,mysql_real_escape_string и т.д. не трогай. Они никаким образом не защитят от XSS.

3 самых частых контекста:

1) использование пользовательского текста.
htmlspecialchars, но это сделает за тебя шаблонизатор.

2) использование html, введенного пользователем
Использование соответствующей библиотеки типа jevix или htmlpurifier. Ни в коем случае не писать свое.

3) bb-коды.
Сначала стоит подумать, нужно ли их использовать. И можно ли свести к пункту 2.

Автор: $дмитрий 15.10.2011, 17:55
Absinthe, какие в этом конкретном примере могут быть XSS?
Код

<input value="<?=htmlspecialchars($_GET['q'])?>">

Автор: MoLeX 15.10.2011, 19:14
$дмитрий, я бы еще указал второй параметр

Автор: Absinthe 15.10.2011, 19:36
MoLeX, он по умолчанию для двойных кавычек.

Автор: MoLeX 15.10.2011, 22:12
да, что-то мне показалась одинарная кавычка)

Автор: bagos 17.10.2011, 15:06
Спасибо за ответы, данный вопрос у меня встал когда потребовалось реализовать поддержку пользователей на сайте и возможность комментирования ими новостей и статей, затем изменение пользователями своих персональных данных. Какое оптимальное решение выбрать для моих задач?

Автор: Absinthe 17.10.2011, 22:21
bagos, я же четко написал:

Цитата

1) использование пользовательского текста.
htmlspecialchars, но это сделает за тебя шаблонизатор.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)