Существует только способ риска XSS, если location.getLocDetails()
может вернуть контролируемый пользователем ввод. Если, например, он возвращает значение прямой из заголовка HTTP Accept-Language
без какой-либо проверки синтаксиса или экранирования, тогда действительно существуют средства риска XSS.
Вы должны всегда избегать управляемого пользователем ввода во время показа , по крайней мере, каждый ввод, который в определенной степени может контролироваться клиентом, включая заголовки HTTP-запроса и URL-адреса запроса. Это в основном довольно просто, просто используйте инструмент отображения, который экранирует сущности HTML <
, >
, "
и '
.
В случае JSP проще всего использовать JSTL (просто перетащите jstl-1.2.jar в /WEB-INF/lib
, если еще не сделано) <c:out>
тег для этого. Таким образом, конкретная строка должна быть заменена (при условии, что location
уже доступен в области страницы, запроса, сеанса или приложения):
var loc = '<c:out value="${location.locDetails}" />';
Тем не менее, самое время избавиться от всех скриптлетов в вашем файле JSP, это только улучшит его :) Чтобы узнать больше о JSTL, прочитайте это .