Предотвращение межсайтового скриптинга с URL-адреса

#html #apache #http #jsp

Вопрос:

Как предотвратить атаку xss с помощью этого тега на моем веб-сайте: <%=request.getParameter(«ErrorMsg»)%> поскольку при этом ввод данных пользователем осуществляется по URL-адресу на странице ошибок выше, фрагмент кода присутствует в файле error.jsp.

Ответ №1:

Замените выражение JSP

 <%= request.getParameter("errorMsg") %>
 

с тегом JSTL c:out как

 <c:out value="${param.errorMsg}" />
 

Это предотвратит атаки межсайтового скриптинга, избегая любой <html> разметки, введенной в параметр запроса , путем замены специальных символов, таких как < , > , эквивалентными HTML-сущностями amp;< amp;> и т. Д.

Обязательно добавьте библиотеку тегов ядра JSTL в свою error.jsp , используя taglib директиву как

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 

Изменить: (в ответ на комментарий ОП)

В вашем коде есть ошибка, она выдаст NullPointerException сообщение «потому encodedValue что есть null «.

Вместо этого замените его статическим методом URLEncoder.encode(request.getParameter("errorMsg"), "UTF-8") . Затем убедитесь ErrorHTTPSession.jsp , что тоже использует c:out тег для печати этого errorMsg , и тогда вы должны быть хороши.

Комментарии:

1. Рави К Таплиял, эта часть кода также присутствует в том же файле JSP URLEncoder кодировАнное значение = null; response.sendRedirect(«/ErrorHTTPSession.jsp?ErrorMsg=» кодировАнное значение.кодирование(запрос.getParameter(«ErrorMsg»)));%>. Должны ли в этом также потребоваться какие-либо изменения?

2. Рави К Таплиял спасибо, это действительно помогло.