Как избежать значений атрибутов HTML в Java без библиотеки Owasp? - PullRequest
6 голосов
/ 01 марта 2012

Я использовал Apache StringEscapeUtils для сущностей HTML, но если вы хотите избежать значений атрибутов HTML, есть ли стандартный способ сделать это? Я предполагаю, что использование функции escapeHtml не приведет к ее сокращению, так как в противном случае Owasp Интерфейс энкодера имеет два разных способа справиться с этим?

Кто-нибудь знает, что связано с экранированием атрибутов HTML и сущностей и что делать с кодированием атрибутов в случае, если у вас нет библиотеки Owasp?

1 Ответ

8 голосов
/ 01 марта 2012

Похоже, что это правило № 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.

...