【发布时间】:2018-07-20 13:12:01
【问题描述】:
我有一个 JSP scriptlet,它接受 GET 参数,必须对这些参数进行 XML 转义以防止 XSS 漏洞。由于 Java 没有内置的 XSS 转义功能,我试图传递给 JSTL 的 fn:escapeXml() 并返回到 scriptlet,如下所示:
<%@ (import fn taglib) %>
<%
String var1 = request.getParameter("input");
request.setAttribute("var1",var1);
%>
<c:set var="var1" scope="request" value="${fn:escapeXml(var1)}" />
<%
var1 = request.getAttribute("var1");
%>
当我尝试此操作时,服务器会返回非常有用的“500:内部服务器错误”。在我花一天时间解决这个问题之前,我想我会问专家:应该这样做吗?我提供的代码中是否有明显的错误,或者我应该在其他地方寻找问题吗?谢谢!
【问题讨论】:
-
扔掉 scriptlet 代码,开心就好……
-
只有当您在浏览器中输出某些内容时,您才需要转义 XML 以防止 XSS。如果你的
var1变量有一些 HTML,但你只在 Java 代码中使用它而不打印到 JSP,你不需要在那里转义 XML