zoukankan      html  css  js  c++  java
  • Web安全之防范点击劫持

    点击劫持(clickjacking)又称为界面伪装攻击 (UI redress attack)是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下或者将透明的iframe覆盖在一个正常的网页上,并诱使用户点击的手段。也可以与 XSS 和 CSRF 攻击相结合,突破传统的防御措施,提升漏洞的危害程度。

    攻击原理


    攻击者实施攻击的一般步骤是:

    1. 黑客创建一个网页利用iframe包含目标网站;
    2. 隐藏目标网站,使用户无法察觉到目标网站存在;
    3. 构造网页,诱骗用户点击特定按钮 (图1中的PLAY!按钮);
    4. 用户在不知情的情况下点击按钮,触发执行恶意网页的命令。

    防御方法

    服务端防御

    X-FRAME-OPTIONS 机制

    X-FRAME-OPTIONS是微软提出的一个http头,专门用来防御利用iframe嵌套的点击劫持攻击。并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。这个头有三个值:

    • DENY // 拒绝任何域加载
    • SAMEORIGIN // 允许同源域下加载
    • ALLOW-FROM // 可以定义允许frame加载的页面地址

    如果浏览器使用了这个安全机制,在网站发现可疑行为时,会提示用户正在浏览 网页存在安全隐患,并建议用户在新窗口中打开。这样攻击者就无法通过 iframe 隐藏目标的网页。


    例如github添加了这个头并且设置为deny,因此不能被嵌套到其他iframe中。


    而百度没加,因此能被嵌套到其他iframe中。


    stackoverflow加入了X-Frame-Options : SAMEORIGIN,以stackoverflow为例,在测试页面中用iframe嵌入stackoverflow:

     <iframe src ="http://stackoverflow.com/"></ iframe>
    

    打开这个页面,得到下面错误:

    Java中设置x-frame-options:

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {  
        //必须
         	HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) res; 
            //实际设置  
        response.setHeader("x-frame-options", "SAMEORIGIN");    
        //调用下一个过滤器(这是过滤器工作原理,不用动)  
        chain.doFilter(request, response);  
    }    
    

    Nginx配置:

    add_header X-Frame-Options SAMEORIGIN
    

    Apache配置:

    Header always append X-Frame-Options SAMEORIGIN
    

    使用 FrameBusting 代码

    使用 JavaScript 脚本阻止恶意网站载入网页。如果检测到网页被非法网页载入,就执行自动跳转功能。Frame Busting代码是一种有效防御网站被攻击者恶意载入的方法,网站开发人员使用Frame Busting代码阻止页面被非法载入。

    使用认证码认证用户

    点击劫持漏洞通过伪造网站界面进行攻击,网站开发人员可以通过认证码识别用户,确定是用户发出的点击命令才执行相应操作。识别用户的方法中最有效的方法是认证码认证。例如,在网站上广泛存在的发帖认证码,要求用户输入图形中的字符,输入某些图形的特征等。

    客户端防御

    升级浏览器

    最新版本的浏览器提供很多防御点击劫持漏洞的安全机制,对于普通的互联网用户,经常更新修复浏览器的安全漏洞,能够最有效的防止恶意攻击。

    NoScript 扩展

    对于Firefox的用户,使用 NoScript 扩展能够在一定程度上检测和阻止点击劫持攻击。利用 NoScript 中 ClearClick 组件能够检测和警告潜在的点击劫持攻击,自动检测页面中可能不安全的页面。

    参考资料

    1. 点击劫持攻击与防御
  • 相关阅读:
    中阶 d04.1 xml解析
    中阶 d04 xml 概念及使用
    中阶 d03.5 (正篇)完整的Dao 操作数据库
    中阶d03.4 JDBC_DAO
    中阶d03.3 JDBC_CURD_Util --- 使用 junit执行单元测试(增删改查)
    单元测试 junit
    idle中上传jar包并使用的方法
    intelij idea 和 eclipse 使用上的区别
    中阶d03.2 JDBC联合properties使用,通过读取本地配置文件为代码传递参数
    swift init 初始化
  • 原文地址:https://www.cnblogs.com/universal/p/10483653.html
Copyright © 2011-2022 走看看