Предотвращение XSS-атак

Я нашел "базу данных" множества XSS-атак, и хотя этот список предоставляет довольно большой список атак, есть ли другие атаки, которые не попали в XML, на что следует обратить внимание и что наиболее неожиданно?


person Community    schedule 06.07.2009    source источник


Ответы (3)


Раньше я использовал HTML Purifier, чтобы позволить пользователям вводить в текстовые поля комментариев только определенный безопасный HTML-код. Он делает очень хорошую работу и имеет очень хорошую документацию.

Для всего остального, например, простого текстового поля или поля выбора, при записи значения на страницу я всегда запускаю его через htmlentities():

htmlentities ($_POST['email'], ENT_QUOTES);

Пока все данные, отправленные пользователем, всегда записываются на страницу с использованием htmlentities(), у вас никогда не должно возникнуть проблемы с XSS.

person Community    schedule 06.07.2009

Не уверен, что именно вы ищете, но если вы хотите предотвратить XSS-атаки на свой сайт, я бы посоветовал вообще не разрешать HTML. Если вы хотите разрешить HTML, посмотрите, как это делает StackOverflow.

Вы можете найти несколько вещей, которые другой сайт пропустил здесь.

person Community    schedule 06.07.2009
comment
Кроме того... Никогда не разрешайте HTML без использования белого списка. Не сворачивайте собственную библиотеку белых списков, просто используйте одну из стандартных. - person Joeri Sebrechts; 06.07.2009

Это очень обширная тема, требующая подробного и актуального знания методов, используемых хакерами для выполнения XSS. Но для начала не стоит доверять ничему вводимому пользователем. Воспринимайте это как потенциальную попытку взломать ваш сайт или повредить вашу базу данных.

Вы можете использовать множество доступных инструментов очистки для удаления потенциальных вредоносных данных, таких как:

для библиотеки asp.net Microsoft Anti-XSS, HTML Agility Pack от codeplex.

для PHP вы, безусловно, можете использовать HTMLPurifier. Это очень хороший и способный инструмент.

person Community    schedule 06.07.2009