Похоже, что это правило № 2 Шпаргалки по профилактике XSS Owasp . Обратите внимание, бит где говорит:
Атрибуты в правильных кавычках можно экранировать только с соответствующими
цитата
Поэтому, я думаю, что атрибуты правильно ограничены двойными или одинарными кавычками, и вы избегаете их (т. Е. Двойная кавычка (") становится & quot; и одинарная кавычка (') становится & # x27; (или')) тогда вы должны быть в порядке. Обратите внимание, что Apache StringEscapeUtils.escapeHtml
будет недостаточным для этой задачи, так как он не экранирует одинарную кавычку ('); для этого вы должны использовать метод replaceAll
String.
В противном случае, если атрибут написан: <div attr=some_value>
, вам нужно следовать рекомендациям на этой странице и ..
экранировать все символы со значениями ASCII, меньшими 256, с помощью & # xHH;
формат (или именованный объект, если таковой имеется) для предотвращения переключения из
атрибут
Не уверен, что существует стандартная реализация этого, отличная от Owasp. Тем не менее, вполне вероятно, что в любом случае не следует так писать атрибуты!
Обратите внимание, что это действительно только тогда, когда вы вводите стандартные значения атрибута, если атрибут является href
или каким-либо обработчиком JavaScript, тогда это другая история. Примеры возможных атак сценариев XSS, которые могут происходить из небезопасного кода внутри атрибутов обработчика событий, см .: http://ha.ckers.org/xss.html.