• CSRF


    CSRF是什么?

      CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

      是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

    图中 Browse 是浏览器,WebServerA 是受信任网站/被攻击网站 A,WebServerB 是恶意网站/点 击网站 B。
    (1)一开始用户打开浏览器,访问受信任网站 A,输入用户名和密码登陆请求登陆网站 A。
    (2)网站 A 验证用户信息,用户信息通过验证后,网站 A 产生 Cookie 信息并返回给浏览器。
    (3)用户登陆网站 A 成功后,可以正常请求网站 A。
    (4)用户未退出网站 A 之前,在同一浏览器中,打开一个 TAB 访问网站 B。
    (5)网站 B 看到有人方式后,他会返回一些攻击性代码。
    (6)浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户的Cookie信息以用户的权限处理该请求,导致来自网站B的恶意代码被执行。
     

    从上面 CSRF 攻击原理可以看出,要完成一次 CSRF 攻击,需要被攻击者完成两个步骤:

    1.登陆受信任网站 A,并在本地生成 COOKIE。
    2.在不登出 A 的情况下,访问危险网站 B。

    如果不满足以上两个条件中的一个,就不会受到 CSRF 的攻击,以下情况可能会导致 CSRF:

    1.登录了一个网站后,打开一个 tab 页面并访问另外的网站。
    2.关闭浏览器了后,本地的 Cookie 尚未过期,你上次的会话还没有已经结束。(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了......)

    解决办法:

    1.通过 referer、token 或者 验证码 来检测用户提交。

    2.尽量不要在页面的链接中暴露用户隐私信息。

    3.对于用户修改删除等操作最好都使用post 操作 。

    4.避免全站通用的cookie,严格设置cookie的域。

  • 相关阅读:
    salesforce rest api 登录 | Authenticating to Salesforce using REST, OAuth 2.0 and Java
    unknown chromium error 400
    项目管理 status email
    项目管理 管理的是什么?
    java 访问 salesforece rest api
    高质量的软件是否值得付出代价?Martin Flower
    Python 3 os.walk使用详解
    体验Managed Extensibility Framework精妙的设计
    分享插件平台相关的源码分析——SharpDevelop、Composition Application Block、Eclipse OSGi、ObjectBuilder
    分享一个与硬件通讯的分布式监控与远程控制程序的设计(上:自动升级与异步事件)
  • 原文地址:https://www.cnblogs.com/Jack666/p/9812852.html
Copyright © 2020-2023  润新知