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

Sam*_*lle 9 xss jsp

在jsp页面中,我有一个输入值属性,以这种方式填充:

value="${param.name}"
Run Code Online (Sandbox Code Playgroud)

如果有人设法放置东西,它很容易受到XSS攻击

"><script>doEvil();</script>
Run Code Online (Sandbox Code Playgroud)

如何正确地逃避param.name的值来修复漏洞?

Bal*_*usC 5

使用JSTL fn:escapeXml()功能.

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

另一种方法是使用一个体面的MVC框架提供taglib来表示已经隐式转义XML/HTML的HTML输入元素,例如JSF和Spring MVC,这样你就不需要在所有地方重复同样的事情而担心会意外地忽略一个.

也可以看看:

  • 谢谢.我们的大多数客户端代码都在客户端,并使用ajax请求获取数据,这些请求在客户端使用适当的API进行处理,但是很久以前我们还有一些遗留的jsp尚未迁移. (2认同)