如何从jsp内部的HTML属性中转义值以避免XSS攻击?

如何从jsp内部的HTML属性中转义值以避免XSS攻击?,jsp,xss,Jsp,Xss,在jsp页面中,我有一个输入值属性,它是这样填充的: value="${param.name}" 如果有人试图放置某些东西,它很容易受到XSS攻击 "><script>doEvil();</script> doEvil(); 如何正确转义param.name的值以修复漏洞?使用fn:escapeXml()函数 <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/fu

在jsp页面中,我有一个输入值属性,它是这样填充的:

value="${param.name}"
如果有人试图放置某些东西,它很容易受到XSS攻击

"><script>doEvil();</script>
doEvil(); 如何正确转义param.name的值以修复漏洞?

使用
fn:escapeXml()
函数

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<input value="${fn:escapeXml(param.name)}" />

...
另一种方法是使用一个体面的MVC框架,提供标记库来表示已经隐式转义XML/HTML的HTML输入元素,如JSF和Spring MVC,这样您就不必在所有地方重复相同的内容,也不用担心会意外忽略其中一个

另见:

谢谢。我们的大多数客户端代码都在客户端,通过ajax请求获取数据,这些数据在客户端通过适当的API进行处理,但是我们有一些很久以前遗留的jsp,我们还没有迁移。在查看了在最近的一篇论文中,.其作者利用自动化来寻找机会,在事件处理程序属性中注入恶意javascript,如
onclick='myfunc()'
。注入
42);警报(1);(42
将导致执行恶意负载
警报(1)
。幸运的是,大多数服务器到javascript处理程序的嵌入都是作为javascript字符串的一部分进行的,例如在
onclick='myfunc(“…”)
中。在这种情况下,应用javascript字符串编码器(如果前者不包括后者,则在顶部使用HTML编码器)就足够了。