межсайтовый скриптинг в JavaScript - PullRequest
1 голос
/ 21 января 2010

Я пытаюсь разрешить исключение межсайтового скриптинга в моем коде. Я получаю сообщение об ошибке XSS в строке, где я использовал выражение JSP внутри кода JS

например: внутри функции JS

function ex(){
    .....
    var loc = '<%= location.getLocDetails()>';
    .....
}

Пожалуйста, дайте мне знать, если у вас есть решение / обходной путь?
Примечание: location.getLocDetails() возвращает строку

1 Ответ

1 голос
/ 21 января 2010

Существует только способ риска 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, прочитайте это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...