Xss跨站脚本经验总结Cross Site Scripting
最近这段时间我所在的公司让我搞一些有关网络安全方面的东西,其实是有关安全机制方面的工作,现在所做的项目整体已经到了维护的阶段,我所处的项目组现在还在改造,不过遗留了好多bug,特别是有关Xss方面的,(XSS跨站脚本 http://de.wikipedia.org/wiki/XSS或者http://baike.baidu.com/view/50325.htm)。详情请参考以上网址。
1.在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的. 比如获取用户的Cookie,导航到恶意网站,携带木马等。
2.他经常发生在如下情况,比如在你的地址栏参数后面加一串javacript脚本,就会在你请求晚场之后弹出对话框,或者在后面加入一些敏感字符,如:单引号,分号,alert等等,他的变种有好多。
eg:Http://localhost:8080/test/index.jsp<script>alert(123)</script>
如果存在跨站脚本就会弹出123.
3.解决方案:
大概思路:
原因——》为什么会出现Xss跨站攻击,大部分是(恶意或用专业的工具扫描)用户在客户端向服务器发送一个请求的时候,掺杂了一些非法字符,如上面提到的,如果不进行过滤,就会出现跨站攻击。
方法——》对每次提交过来的参数、表单对象进行过滤,用到了request.getParam(),request.getAttrbute(),一个是获取string参数值,一个是表单对象。在没有响应之前就对其进行过滤,然后在将其提交相应。
具体实现——》写一个工具类,用到了XSSProtect(上面提到的Google XSSProtect),参考其文档写一个工具类;然后写一个HttpRequestWrapper,将其参数进行过滤后包装;最后写一个Filter,得到所有的请求资源,对请求资源过滤,实现其doFilter方法,然后在web.xml中配置。
4.注意事项
希望对大家有所帮助!谢谢!有关安全机制方面的东西还需要学习很多,希望大家多多分享!