防止来自 url 的跨站点脚本
Prevent cross-site scripting from url
如何在我的网站中防止来自此标签的 xss 攻击:
<%=request.getParameter("errorMsg")%>
因为这是通过错误页面中的 url 呈现用户输入
上面的代码片段存在于 error.jsp 文件中。
替换JSP表达式
<%= request.getParameter("errorMsg") %>
使用 JSTL 标签 c:out
作为
<c:out value="${param.errorMsg}" />
这将通过替换特殊字符(如 <
)转义注入到 请求参数 中的任何 <html>
标记来防止跨站脚本攻击, >
,及其等效的 HTML 实体 <
、>
等
确保使用 taglib
指令将 JSTL 核心标记库添加到您的 error.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
编辑:(回应 OP 的评论)
你的代码有一个错误,它会抛出一个 NullPointerException
因为 encodedValue
是 null
.
将其替换为 static 方法 URLEncoder.encode(request.getParameter("errorMsg"), "UTF-8")
。然后确保 ErrorHTTPSession.jsp
也使用 c:out
标签打印这个 errorMsg
然后你应该很好。
如何在我的网站中防止来自此标签的 xss 攻击: <%=request.getParameter("errorMsg")%> 因为这是通过错误页面中的 url 呈现用户输入 上面的代码片段存在于 error.jsp 文件中。
替换JSP表达式
<%= request.getParameter("errorMsg") %>
使用 JSTL 标签 c:out
作为
<c:out value="${param.errorMsg}" />
这将通过替换特殊字符(如 <
)转义注入到 请求参数 中的任何 <html>
标记来防止跨站脚本攻击, >
,及其等效的 HTML 实体 <
、>
等
确保使用 taglib
指令将 JSTL 核心标记库添加到您的 error.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
编辑:(回应 OP 的评论)
你的代码有一个错误,它会抛出一个 NullPointerException
因为 encodedValue
是 null
.
将其替换为 static 方法 URLEncoder.encode(request.getParameter("errorMsg"), "UTF-8")
。然后确保 ErrorHTTPSession.jsp
也使用 c:out
标签打印这个 errorMsg
然后你应该很好。