设为主页 | 加入收藏 | 繁體中文

御CSRF的第四种方法

  防御CSRF的第四种方法
  我们知道,一般防御CSRF有三种方法,果断referer、验证码、token。
  对付果断referer来说,固然客户端带用户形态的跨域提交,js和as已经无法伪造referer了;但是对付客户端软件和flash的提交,一般是不带referer的,听说一些山寨浏览器也不带。那么就必要为此开绿灯,但这样使得外站的flash请求伪造无法被防御。
  而验证码毛病显着:会对用户造成影响。
  token的题目也有一些:时效性无法包管;大型服务时,必要一台token生成及校验服务器;必要变动所有表单添加字段。
  而近来我在做之类的防御时,想出了别的一种方法,跟xeye、woyigui等人在群里讨论了一番,以为应该是可行的,以是拿出来分享一下,并让其他的牛人看看能否有什么毛病
  其实原理非常简单,与token也差未几:当表单提交时,用js在本域添加一个暂时的cookies字段,并将逾期工夫设为1秒钟之后,然后再提交;服务端校验有这个字段即放行,没有则以为是CSRF。
  token防csrf的原理是:无法经过ajax等方式获得外域页面中的token值,xmlhttprequest必要服从浏览器同源策略;而暂时cookies的原理也是:cookies只能在父域和子域之间设置,也服从同源策略。
  我们可以简单看一个demo:
  demo:
  http://127.0.0.1/test.html:
 
 


 
 
 
 

 
  http://127.0.0.1/test.php
    echo "
Cookies
";
  var_dump($_COOKIE);
  ?>
  test.html为浏览器真个表单,内里有三个按钮:
  第一个是正常的表单提交;第二个是添加暂时cookies后提交表单;第三个因此hook submit变乱来添加暂时cookies并提交。
  结果就像开头的图片演示那样,正常的表单提交不会出现暂时cookies字段,第二个和第三个按钮提交则会出现。各人可以反复点击按钮来查看结果,但必要注意工夫隔断需凌驾1秒。(固然可以将test.html拿到外域看看,不过要注意form的target不克不及指向iframe了可以以新窗口打开。由于同源策略,cookies肯定是带不过去的)
  不过这种方式只适用于单域名站点,大约宁静需求不必要“当子域产生XSS隔离父域”。由于子域是可以操纵父域的cookies的,以是它的缺陷也比较显着:这种方法无法防御由于其他子域产生的xss所举行的表单伪造提交。而一个区分分域的自校验token是可以防止从其他子域到本域的提交的。但如果对付单域而言,这种方法应该是充足的,并且宁静性可能会略大于token。
  和群里的几位大牛讨论了一下,也以为这种方式没有什么大题目,不过确实有一些小的疑问,譬如:
  网络不流畅,有耽误会不会招致cookies生效。这个显然是不会的,由于服务端cookies是在提交请求的header中获得的。延时在服务端,不在客户端,而1秒钟足可以完成set Cookies+post header整个post表单的过程。
  cookies的生成依赖于js,相当于这个token是明文的?这个简直,不论接纳几多种加密,只需在客户端,就会被破解,不过不论怎样,csrf无法在有效户形态的情况下去添加这个暂时cookies字段。固然服务端curl等可以,但是无法将当前用户的形态也带过去。
  外站能否可以伪造这个暂时cookies呢?目前来看至多经过as和js无法向其他域添加和变动cookies的,经过服务端固然可以伪造cookies,但获得不到目的域的用户形态。
  如果目的域有XSS就完蛋了?恩,不过一般来说果断referer、token和简单的验证码(使用canvas识别?)也差未几完蛋了。
  如果由于某种网络题目,获得不到cookies了呢?那么用户形态也不克不及获得了,用户只能再提交一次了。
  ok,就这些!
  说实话,这种新方法真相能否真正有效我也没谱,说不定有某种BT的方式可以绕过?以是share一下,各人没关系看看能否真的有效。如果真有效,那么大约是一种最简单的,对代码改动最小,对服务器压力也最小的防御CSRF的方法了。
  很巧妙的想法,但是没法100%包管不被攻击,这个方法的宁静性依赖于cookie的生效工夫,假定有个csrf页面里死循环不绝提交的话,如果被攻击用户打开这个页面没有封闭,这个过程中如果用户又去被攻击的网站作一次正常操纵的话,攻击就有肯定的概率乐成了,好比以下代码在ff中就有肯定的概率乐成(ie不可,由于iframe跨域提交cookie被阻止了):
 
 
 
 

 
 

 
 
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: