zoukankan      html  css  js  c++  java
  • 新人开车——点击劫持

    一、什么是点击劫持

      点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

      其关键作用的代码:

        iframe{

            900px;

            height:250px;

            position:absolute;

            top:-195px;

            left:-740px;

            z-index:2;

            -moz-opacity:0;

            opacity:0;

            filter:alpha(opacity=0);

          }

      通过控制iframe的长、宽,以及调整top、left的位置,可以把iframe页面内的任意部分覆盖到任何地方。同时设置iframe的position为absolute,并将z-index的值设置为最大,以达到

    让iframe处于页面的最上层。最后,再通过设置opacity来控制iframe页面的透明程度,值为0是完全不可见的。

      点击劫持与CSRF攻击有异曲同工之妙,都是在用户不知情的情况下诱使用户完成一些工作。但是在CSRF攻击的过程中,如果出现用户交互的页面,则攻击可能会无法顺利完成。与之相反的是,点击劫持没有这个顾虑,它利用的就是与用户产生交互的页面

    二、点击劫持案例

      1、Flash点击劫持

      2、图片覆盖攻击

      3、拖拽劫持与数据窃取

      4、手机触屏劫持

    三、防御点击劫持

      传统的方式一般是禁止跨域的iframe来防范。

      1、frame busting

        通常可以写一段JS代码,以禁止iframe的嵌套。

        比如如下代码:

          if ( top.location != location ){

                      top.location=self.location;

                      }

      但是这种方式也存在缺陷。由于它是JS写的,控制能力并不是特别强,因此有许多方法可以绕过。

      比如针对parent.location的iframe busting,就可以采用嵌套多个iframe的方法绕过。

        if ( top.location != self.location){

                      parent.location = self.location;

                      }

    绕过方式:

        Attacker top frame:

        <iframe src="attacker2.html">

        Attacker sub-frame:

        <iframe src="http://www.victim.com">

    此外,像HTML5中iframe的sandbox属性,IE中iframe的security属性等,都可以限制iframe页面中的JS脚本执行,从而可以使得frame busting失效。

      2、X-Frame-Options

      由于上面的防御方式容易被绕过,所以一个比较好的方案是使用一个HTTP头——X-Frame-Options。

      X-Frame-Options可以说是为了解决点击劫持而产生的。

      有三个可选的值:

        deny

        sameorigin

        allow-from origin

        当值为deny时,浏览器会拒绝当前页面加载任何frame页面;

        若值为sameorigin,则frame页面的地址只能为同源于域名下的页面;

        若值为allow-from origin,则可以定义允许frame 加载的页面地址。

    四、总结

      点解劫持相对于xss与csrf来说,因为需要诱使用户与页面产生交互行为,因此实施攻击的成本更高,在网络犯罪中比较少见。但是点击劫持在未来任然有可能被攻击者

    利用在钓鱼、欺诈和广告作弊等方面,不可不察。

  • 相关阅读:
    剑指Offer-30.连续子数组的最大和(C++/Java)
    剑指Offer-29.最小的K个数(C++/Java)
    UVA 1616 Caravan Robbers 商队抢劫者(二分)
    UVA 10570 Meeting with Aliens 外星人聚会
    UVA 11093 Just Finish it up 环形跑道 (贪心)
    UVA 12673 Erratic Expansion 奇怪的气球膨胀 (递推)
    UVA 10954 Add All 全部相加 (Huffman编码)
    UVA 714 Copying Books 抄书 (二分)
    UVALive 3523 Knights of the Round Table 圆桌骑士 (无向图点双连通分量)
    codeforecs Gym 100286B Blind Walk
  • 原文地址:https://www.cnblogs.com/hdsec/p/8427785.html
Copyright © 2011-2022 走看看