JSTL 标签过滤跨站处理

上篇文章介绍了xss 跨站的一些小技巧,我们不局限于传统的

<script>alert("xss")</script>这样的脚本,也会用一些其他的特殊处理方式,有兴趣的朋友可以去深入研究,毕竟只有知己知彼才能百战不殆。

但是系统往往在建设之处,很多所谓的设计者们并没有考虑这些问题,这才是为什么网上很多虽然活着却实际上已经死了的网站,

这里简单介绍一下jstl标签处理,

如果你讨厌数据库里面存放着一堆你看不懂的转义字符,或者你后台很多数据没有处理,或者,还有很多其他的原因你无能为力,

但是总不能页面显示的时候窗口乱弹吧 -_-#!

这里说一个解决思路,如果你使用JSP来构建你的页面,那你肯定不会陌生JSTL标签和EL表达式,那么JSTL标签可以帮助你解决一下xss问题

${}是el表达式,默认不过滤特殊符号的,但是你可以使用<c:out value='${}'/> 过滤特殊符号:)

这样可以帮助你很大程度上解决了页面的问题,还不用重启你的server,如果你觉得这样太过于麻烦(页面要修改的地方太多了)

我们可以修改el表达式的默认实现,让${}默认输出滤特殊字符。等价于<c:out value=''/>

参考帮助 http://pukkaone.github.io/2011/01/03/jsp-cross-site-scripting-elresolver.html

修改方式如下:
2、下载jsp-api-2.1.jar加入项目,否则编译报 javax.el.ELResolver 找不到。
3、修改web.xml加入自己的监听器
<listener> <listener-class>com.xxxxx.support.xss.EscapeXmlELResolverListener</listener-class> </listener>
注意,框架里原来spring自动在绑定参数前过滤字符的,要去掉。只需要在页面输出的时候 escape 即可。而此时,${}直接就是escape的了。
此方法最后没有使用,原因是${pager.postToolBar}等输出,需要html输出,但是也被过滤了,改动也将很多。干脆还是开发人员在自己页面里用<c:out value="${}"/>输出。
反正我不是折腾了,我选择一条简单折中的线路。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值