достаточно ли htmlspecialchars () в PHP или h () в Ruby on Rails для защиты всех случаев атак XSS (межсайтовый скриптинг)? - PullRequest
2 голосов
/ 14 мая 2009

Достаточно ли htmlspcialchars($user_data) в PHP или h(user_data) в Ruby on Rails для защиты всех случаев атак XSS (межсайтовый скриптинг)? А как насчет используемого кодирования или любых других возможных соображений?

Ответы [ 3 ]

4 голосов
/ 14 мая 2009

И htmlspecialchars, и h экранируют все символы, которые могут иметь особое значение в HTML, буквальный HTML не может быть введен в целевую страницу.

Однако есть способы выполнения (опасного) Javascript, которые не требуют внедрения HTML. Например, если у вас есть приложение, которое конвертирует [img http://example.com/img.jpg] в <img src="http://example.com/img.jpg/>, представьте, что может произойти, если пользователь введет [img javascript:alert(document.cookies);]. Экранирование символов HTML не спасет вас здесь, вы должны очистить данные URL. Это довольно полный список возможных примеров уязвимости XSS .

Если вы всегда используете htmlspecialchars / h и , вы всегда полностью очищаете пользовательский ввод, который используется в качестве значений атрибутов в любых элементах HTML, тогда у вас есть правильная защита XSS.

1 голос
/ 14 мая 2009

В целом существует три различных типа XSS : на основе DOM , Непостоянный и Постоянный .

Теперь языки на стороне сервера могут предотвращать только последние два ( Непостоянные и Постоянные ), поскольку первые имеют место только на стороне клиента.

0 голосов
/ 14 мая 2009

Вы также можете попробовать использовать strip_tags, если вы не разрешаете использование тегов HTML в сообщениях. Также проверьте html очиститель

...