Для этого кода:
HashMap temphashMap = session.getAttribute("abc");
как я могу проверить хэш-карту на предмет уязвимости межсайтового скриптинга с помощью ESAPI?
Для этого кода:
HashMap temphashMap = session.getAttribute("abc");
как я могу проверить хэш-карту на предмет уязвимости межсайтового скриптинга с помощью ESAPI?
Вы не можете этого сделать. Чтобы выполнить проверку, вы должны заранее знать специальные правила и потоки данных для каждого отдельного элемента в этом HashMap
.
Как узнать, является ли одно из полей формы в вашем приложении форматированным текстом, вроде того, которое я использовал для ввода этого ответа? Что, если некоторые HTML-теги разрешены?
Вы не можете этого знать.
Вот почему в 100 раз важнее убедиться, что данные правильно закодированы для надлежащего контекста.
Для этого вы будете использовать методы класса ESAPI.encoder()
.
Самое близкое к тому, о чем вы просите, - это настроить фильтр сервлета для каждой пары запрос/ответ, а затем использовать фильтр XSS, такой как AntiSamy, чтобы разрешить определенные теги и запретить другие. Однако правила отличаются для значения, используемого в атрибуте HTML, тексте тега HTML или блоке <textarea>
. Вам пришлось бы написать довольно значительный объем логики для того, чего вы могли бы избежать, просто экранируя все данные, прежде чем передать их другому интерпретатору.