csrf站外类型的漏洞其实就是传统意义上的外部提交数据问题,一般程序员会考虑给一些留言评论等的表单加上水印以防止spam问题,但是为了用户的体验性,一些操作可能没有做任何限制,所以攻击者可以先预测好请求的参数,在站外的web页面里编写javascript脚本伪造文件请求或和自动提交的表单来实现get、post请求,用户在会话状态下点击链接访问站外的web页面,客户端就被强迫发起请求。
浏览器的安全缺陷
现在的web应用程序几乎都是使用cookie来识别用户身份以及保存会话状态,但是所有的浏览器在最初加入cookie功能时并没有考虑安全因素,从 web页面产生的文件请求都会带上cookie,如下图所示,web页面中的一个正常的图片所产生的请求也会带上cookie:
get http://website.com/log.jpg
cookie: session_id
客户端 ——————————————————-服务器
咱们按照这个思路,山寨一个crumb的实现,代码如下:
代码如下