美文网首页
CSRF 跨站请求伪造

CSRF 跨站请求伪造

作者: McDu | 来源:发表于2017-09-22 13:58 被阅读82次

    伪造一个请求,达到某种目的。

    1. 浏览器的 Cookie 策略,包含 “Session Cookie”(临时 Cookie) 和 “Third-party Cookie”(本地 Cookie),Session Cookie 在浏览器关闭后失效,Third-party Cookie 在过了设置的 Expire 时间后失效。
      如果浏览器要跨域请求资源,由于安全原因,某些浏览器会阻止 Thrid-party Cookie 的发送。
    2. P3P 头的存在,使 CSRF 能在 <iframe> 等标签里发送 Cookie。
    3. CSRF 攻击能够通过 GET 请求发起,但是也可以通过自动提交表单而通过 POST 请求发起。

    CSRF 的防御:

    1. 验证码:
      CSRF 的出现,是因为在用户不知情的情况下构造了网络请求,验证码的出现,强迫用户跟机器交互,从而能很好的遏制 CSRF,但出于用户体验的考虑,网站不能给所有的操作加上验证码,所以,验证码只能是一种辅助手段。
    2. Referer Check
      Referer Check 在互联网中最常见的应用就是“防止图片盗链”,Referer Check 被用于检查请求来自合法的“源”。
      Rerferer Check 的缺陷在于:服务器并非任何时候都能取到 Rerferer。出于隐私的保护,出于安全的考虑,浏览器会限制 Rerferer 的发送。比如从一个https页面上的链接访问到一个非加密的http页面的时候,在http页面上是检查不到HTTP Referer的。Referer 容易被用户改变。
    3. Anti CSRF Token
      CSRF 出现的原因是由于重要操作的所有参数都可以被攻击者猜到 ,利用 URL 的所有参数和参数值伪造请求。一个解决办法是把所有参数加密,让其不可预测,代价是对用户不友好,有些需要明文分析的参数变的不可读,这样的做法太极端。
      CSRF 主流防御方式是在后端生成表单的时候生成一串随机 token ,内置到表单里成为一个字段,同时,将此串 token 置入 session 中。每次表单提交到后端时都会检查这两个值是否一致,以此来判断此次表单提交是否是可信的。提交过一次之后,如果这个页面没有生成 CSRF token ,那么 token 将会被清空,如果有新的需求,那么 token 会被更新。
      攻击者可以伪造 POST 表单提交,但是他没有后端生成的内置于表单的 token,session 中有没有 token 都无济于事。
      token 应放在表单里,如果放在 URL 里,则可能通过 Referer 的方式泄露。
      CSRF 的 Token 仅仅用于对抗 CSRF 攻击。当网站还存在 XSS 漏洞时,这个方案会失效,因为 XSS 可以模仿客户端浏览器执行任意操作。在 XSS 攻击下,攻击者完全可以请求页面后,读出页面内容里的 Token 值,然后再构造一个合法的请求。这个过程被称为 XSRF。

    相关文章

      网友评论

          本文标题:CSRF 跨站请求伪造

          本文链接:https://www.haomeiwen.com/subject/veczhxtx.html