防止来自 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 实体 &lt;&gt;

确保使用 taglib 指令将 JSTL 核心标记库添加到您的 error.jsp

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

编辑:(回应 OP 的评论)

你的代码有一个错误,它会抛出一个 NullPointerException 因为 encodedValuenull.

将其替换为 static 方法 URLEncoder.encode(request.getParameter("errorMsg"), "UTF-8")。然后确保 ErrorHTTPSession.jsp 也使用 c:out 标签打印这个 errorMsg 然后你应该很好。