jsp xss 解决办法


<c:out value='${}'/> 默认过滤特殊符号。 ${}是el表达式,默认不过滤特殊符号。

我们可以修改el表达式的默认实现,让${}默认输出滤特殊字符。等价于<c:out value=''/>
参考了: http://pukkaone.github.com/2011/01/03/jsp-cross-site-scripting-elresolver.html
修改方式如下:
1、从  https://github.com/pukkaone/webappenhance/blob/master/src/main/java/com/github/pukkaone/jsp/EscapeXmlELResolver.java  下载三个 Escape类放项目里

2、下载jsp-api-2.1.jar加入项目,否则编译报 javax.el.ELResolver 找不到。

3、修改web.xml加入
<listener> <listener-class>com.yszoe.support.xss.EscapeXmlELResolverListener</listener-class> </listener>
注意,框架里原来spring自动在绑定参数前过滤字符的,要去掉。只需要在页面输出的时候 escape 即可。而此时,${}直接就是escape的了。
此方法最后没有使用,原因是${pager.postToolBar}等输出,需要html输出,但是也被过滤了,改动也将很多。干脆还是开发人员在自己页面里用<c:out value="${}"/>输出,用ibm scan扫描下安全性,针对性修改页面即可。

你可能感兴趣的:(jsp,EL,xss)