Skip to content

Latest commit

 

History

History
31 lines (24 loc) · 1.52 KB

csrf.org

File metadata and controls

31 lines (24 loc) · 1.52 KB

csrf

Tag
HTTP

CSRF 利用了 Web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

例子:

  1. 一家银行用以运行转账操作的 URL 地址如下:https://bank.example.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
  2. 恶意攻击者可以在另一个网站上放置如下代码:<img src=”https://bank.example.com/withdraw?account=Alice&amount=1000&for=Badman” />
  3. 如果有账户名为 Alice 的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失 1000 资金

防御措施:由于 CSRF 的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在 cookie 中,并且攻击者无法伪造的数据作为校验, 那么攻击者就无法再运行 CSRF 攻击。

比如:

  • 利用模板引擎在渲染时向 HTML 表格中嵌入 CSRF Token:
    <form method="post">
      {% csrf_token %}
    </form>
        

参考:

理解:

  • cors 客户端对外域的防护
  • csrf 服务端对外域的防护