在一个jsp页面中,我有一个输入值属性,它是这样填充的:
value="${param.name}"
如果有人设法放置一些东西,它很容易受到 XSS 攻击
"><script>doEvil();</script>
如何正确转义 param.name 的值以修复漏洞?
使用JSTL 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,这样您就不需要在所有地方重复相同的内容并担心意外忽略一个.