原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
http://flyingsnail.blog.51cto.com/5341669/1335997
前两天QA提上来一个问题,说是页面上会弹出框来。本以为是我的测试JS代码忘记删掉了,后来再看才发现是有人提交测试评论时,故意协商了JS代码,页面直接解析该JS就有弹出框了,代码如下:
<script>alert("1")</script>
后来在网上一搜才知道这个叫做XSS攻击,即(Cross Site Scripting) 跨站脚本攻击。是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的. 比如获取用户的Cookie,导航到恶意网站,携带木马等。
假如有下面一个textbox
<input type="text" name="address1" value="value1from">
value1from是来自用户的输入,如果用户不是输入value1from,而是输入 "/><script>alert(document.cookie)</script><!- 那么就会变成
<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">
嵌入的JavaScript代码将会被执行
或者用户输入的是 "onfocus="alert(document.cookie) 那么就会变成
<input type="text" name="address1" value="" onfocus="alert(document.cookie)">
事件被触发的时候嵌入的JavaScript代码将会被执行
攻击的威力,取决于用户输入了什么样的脚本
对它的介绍在一下链接中介绍的很详细,可惜主要讲的是ASP.NET的,不是JAVA的。但是原理是一样的。
http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html
XSS之所以会发生, 是因为用户输入的数据变成了代码。 所以我们需要对用户输入的数据进行HTML Encode处理。 将其中的"中括号", “单引号”,“引号” 之类的特殊字符进行编码。以下链接介绍的是一个老外写的JAVA类,
http://josephoconnell.com/java/xss-html-filter/
另外还找到一篇文章介绍了两个类似的JAVA类:
http://www.myhack58.com/Article/html/3/7/2008/18645.htm
使用起来很简单,就是后台在接收到提交信息后,调用下该类的filter方法,进行一下替换,得到安全的内容。
当然,以上介绍的都是后台处理的方式,前端也可以处理,同样是替换,但是不够友好型。以下网站就介绍了一段JS过滤XSS攻击的方法:
http://blog.youkuaiyun.com/a0820010401/article/details/9169131
哎!码农真的不是这么好做的啊,很多代码都是不安全的,要做完全的防范啊!不然,用户信息轻易的就被弄走了!