在jsp页面中,我有一个输入值属性,以这种方式填充:
value="${param.name}"
如果有人设法放置某些东西,它很容易受到XSS攻击
"><script>doEvil();</script>
如何正确转义param.name的值以修复漏洞?
答案 0 :(得分:5)
使用JSTL fn:escapeXml()
功能。
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<input value="${fn:escapeXml(param.name)}" />
另一种方法是使用一个体面的MVC框架,提供taglib来表示已经隐式转义XML / HTML的HTML输入元素,例如JSF和Spring MVC,这样你就不需要在所有地方重复同样的事情而担心意外地忽视了一个。