之前做过一个项目,我们公司内部测试完功能之后,还会拿着项目去竞标,在这个过程中,举办方会拿我们的软件找一些专业的公司做检测,其中有一项就是安全漏洞扫描。其实扫描出来的漏洞,用户平时使用中基本很小的概率碰到,但是举办方会拿着这个说事,要求必须整改。这些安全漏洞中最常见的是csrf跨站攻击,修改起来其实也不是特别麻烦,那我们主要就看下平时测试的时候应该怎么注意才能避免这个问题。
【csrf攻击的原理】:
用户登录浏览器,打开网页A,输入登录信息并操作网站,在未退出登录的情况下,另外开启一个tabB,访问网站进行操作,由于A的登录信息(cookie)已经存储在浏览器中,此时网页B接收到用户请求后,如果是恶意网站,很可能会返回一些攻击性代码,并发出一个请求要求访问原网站A,此时就可能恶意篡改数据,恶意删除数据,恶意注入数据等。
【关于csrf攻击的测试方法】:
对于测试而言,其实测试方法很简单,第一种方法是打开浏览器登录,未退出的情况下再开启另一个tab,看下页面有没有跳转到登录页面,如果还是保留已登录状态,那么就是有问题的。另外一种方法是抓包,抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,并且返回200ok,那么可以大致确定系统存在安全漏洞。
【关于软件的修改方法】:
目前比较常用的方法是,在请求链接中加入加密的token并进行校验,每次打开网页登录后都是不一样的链接,同时服务器端加一个拦截器来校验这个token,如果不匹配的话就进行拒绝,这样就可以保证每次登录都是唯一的token了。