我有一个JSP页面,其中包含
形式的scriptlet<%
String imageId = request.getParameter("imageId");
if(getImageById == null){
throw new JspException("No data found for " + imageId);
}
%>
抛出异常时,会打印请求参数“imageId”,从而允许XSS攻击。
清除Exception()的输入以防止这种情况的最佳方法是什么?
答案 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