如何在 JSP scriptlet 异常中防止 XSS?

How do I prevent XSS in JSP scriptlet exceptions?

我有一个 JSP 页面,其中的 scriptlet 形式为

<%
String imageId = request.getParameter("imageId");
if(getImageById == null){
    throw new JspException("No data found for " + imageId);
}
%>

异常抛出时,打印请求参数"imageId",允许XSS攻击

清理 Exception() 的输入以防止出现这种情况的最佳方法是什么?

这取决于图像 id 应该是什么。

如果它是一个数字,那么首先尝试解析它。如果您需要字符串数据(如 GUID),您应该检查它是否符合规范。

在任何一种情况下 - 如果 Id 无效则不要将其传回 - 只说没有找到数据。

如果 ID 可以是任意一组随机字符,则在 JSP 端使用 JSTL

<c:out value="${myId}"/>

escapeXml(myId)

来自

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

这可能有帮助:How can I escape special HTML characters in JSP?

或者这样:Recommended method for escaping HTML in Java

这是 OWASP 的消毒剂:https://github.com/owasp/java-html-sanitizer