zoukankan      html  css  js  c++  java
  • CSRF

    跨站请求伪造CSRF

     

    CSRF是Cross Site Request Forgery的缩写,乍一看和XSS差不多的样子,但是其原理正好相反,XSS是利用合法用户获取其信息,而CSRF是伪造成合法用户发起请求。

    XSS危害——session劫持中我们提到了session原理,用户登录后会把登录信息存放在服务器,客户端有一个用户标识存在cookie中,只要用户不关闭浏览器或者退出登录,在其有效期内服务器就会把这个浏览器发送的请求当作当前客户,如果这时候用户被欺骗,使用浏览器打开了某些恶意网址,里面就会包含一些不是用户希望发送的请求,服务器也会把这些请求当作是当前客户发送的请求,这时候用户的个人信息、资金安全、如果用户权限高整个站点都可能会受到危害。

    CSRF原理

    CSRF原理很简单,当用户登录以站点时用浏览器打开一恶意网址,就有可能遭受攻击。有同学会奇怪了这个很难实现吧,必须同时满足两个条件才行。其实很简单,比如我们使用QQ,看看QQ zone,突然蹦出个包含中奖或者问卷调查链接的聊天窗口(或者是。。。),这个腾讯做了防范,但是我们收到封邮件包含此内容,很多用户会选择去点击

    在网上找了张图片很能说明这个过程

    201371311142979

    简单小例子

    在某个论坛管理页面,管理员可以在list.php页面执行删除帖子操作,根据URL判断删除帖子的id,像这样的一个URL

    http://localhost/list.php?action=delete&id=12

    当恶意用户想管理员发送包含CSFR的邮件,骗取管理员访问http://test.com/csrf.php,在这个恶意网页中只要包含这样的html语句就可以利用让管理员在不知情的情况下删除帖子了

    <img alt="" arc="http://localhost/list.php?action=delete&id=12"/>

    这个利用了img的src可以跨域请求的特点,这种情况比较少,因为一般网站不会利用get请求修改资源信息

    升级

    是不是网站利用post修改信息就安全了呢,还拿刚才例子,改成post修改的

    <?php
                $action=$_POST['action'];
                $id=$_POST['id'];
                delete($action,$id);
            ?>

    但是恶意网站这么写一样可以攻击

    复制代码
    <!DOCTYPE html>
    <html>
      <body>
        <iframe display="none">
          <form method="post" action="http://localhost/list.php">
            <input type="hidden" name="action" value="delete">
            <input type="hidden" name="id" value="12">
                    <input id="csfr" type="submit"/>
          </form>
        </iframe>
    
            <script type="text/javascript">
               document.getElementById('csfr').submit();
        </script>
      </body>
    </html>
    复制代码

    如何防范

    1. 使用post,不使用get修改信息

    2. 验证码,所有表单的提交需要验证码,但是貌似用起来很麻烦,所以一些关键的操作可以

    3. 在表单中预先植入一些加密信息,验证请求是此表单发送

     引自:
      https://www.cnblogs.com/dolphinX/p/3403520.html
     
  • 相关阅读:
    mysql 查看某数据库各个表容量大小SQL
    Gated RNN(《深度学习进阶》第六章总结)
    RNN(《深度学习进阶》第五章总结)
    word2vec的改进(《深度学习进阶》第四章总结)
    201521123024 《Java程序设计》 第九周学习总结
    如何在vue项目中使用md5及base64加密
    vite+vue3.0+vue-router+vuex快速搭建项目
    vite+vue3.0搭建项目
    MySQL创建计划任务
    MySQL基础函数
  • 原文地址:https://www.cnblogs.com/JiangLe/p/7875825.html
Copyright © 2011-2022 走看看