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

时间:2017-05-16 14:48:02

标签: java jsp xss

我有一个JSP页面,其中包含

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

抛出异常时,会打印请求参数“imageId”,从而允许XSS攻击。

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

1 个答案:

答案 0 :(得分:2)

这取决于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