#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. Рави К Таплиял спасибо, это действительно помогло.