CSRF通俗来讲就是跨站伪造请求攻击,英文Cross-Site Request Forgery,在近几年的网站安全威胁排列中排前三,跨站攻击利用的是网站的用户在登陆的状态下,在用户不知不觉的情况下执行恶意代码以及执行网站的权限操作,CSRF窃取不了用户的数据,只能执行用户能操作的一些数据。比如在用户不知道的情况下, 把账户里的金额,以及银行卡号,体现功能,都转移到其他人账户里去。如果被攻击者是一个管理员的权限,那么就会对网站安全构成严重的危害。
CSRF跨站漏洞
由于网站设计人员,对CSRF跨站漏洞不是太了解,误认为用户从浏览器发送过来的请求,当做正常的用户请求,当受害者点击入侵者构造的恶意链接的时候就会执行恶意的代码,以及恶意的操作,例如删除用户的银行卡。
GEThttp://xxx.com/bank/delbank.php?id=6当正常用户点击上面的连接的时候,并且该用户的登陆状态一直存在,用户就会不知不觉的删除了自己账户里的银行卡,给用户造成没必要的损失,说实话,简单的用户身份验证以及过滤判断,只能保证用户的请求是来自浏览器,却不能判断请求本身是用户自己操作删除的银行
CSRF网站跨站漏洞修复办法
CSRF漏洞基本都是在网站代码的框架中去修复该漏洞,我们在对网站安全进行测试的同时,检查到csrf漏洞的时候,我们要对CSRF框架安全修复的防护,进行详细的了解,一般安全测试的时候我们要看程序代码里的增加,删除,修改,等功能代码里是否调用formtoken,token等的变量函数有没有对refer请求链接,进行判断。如果有对来路的链接判断就可以防止CSRF攻击。还有一方面就是在测试token值的时候,有没有自定义随便重放的GET请求,如果没有自定义的值,则替换请求来路的网址为空,重放请求是否可以返回200状态的数据,从而判断网站存不存在csrf漏洞。
1.增删改的请求,全部用post的数据传输来执行。
2.formtoken的安全检查,其实也是token值的检测,如果token值重复,那么只能作为一次请求有效。
3.对于一些私密,以及较为重要的操作,尽量使用二次安全验证,比如短信,以及动态口令,或者是验证码的安全效验。
4.get请求中的来路网址判断,对HTTP来的请求,判断请求的网址是多少,建立网址白名单机制,如果是允许的来路网址即可执行操作,如果不是则拦截请求。
5.token的随机值生成,每一次的用户请求,都会在请求中带有随机值的token值,服务器那面会对用户传输的数据进行token验证以及安全判断,如果token值不正确则拦截用户的请求。