首页 文章

检查引荐来源是否足以防止CSRF攻击?

提问于
浏览
40

检查引荐来源是否足以防止跨站点请求伪造攻击?我知道引用者可能是欺骗者,但攻击者是否有办法为客户端做这件事?我知道令牌是常态,但这会有用吗?

5 回答

  • -7

    除其他外,使用引荐来源不适用于浏览器(或公司代理)不发送引用的用户 .

  • 4

    这是一个3岁的问题,有四个不同的答案基本上陈述相同的事情:遵循规范,使用令牌,不要尝试使用referer .

    虽然令牌仍然被认为是最安全的选择,但使用引用通常更容易,并且也非常安全 . 请务必查看所有PUT / POST / PATCH / DELETE请求,如果缺少引用或来自错误的域,请将其视为攻击 . 真的很少(如果有的话)代理删除这些类型的请求的引用 .

    另请参阅OWASP recommendation关于将referer标头检查为CSRF保护:

    检查Referer标头尽管在您自己的浏览器上欺骗referer标头是微不足道的,但在CSRF攻击中是不可能的 . 检查引用程序是防止嵌入式网络设备上的CSRF的常用方法,因为它不需要每用户状态 . 当内存稀缺时,这使得引用者成为CSRF预防的有用方法 . 但是,从CSRF保护来看,检查引用者被认为是较弱的 . 例如,开放重定向漏洞可用于利用受引用检查保护的基于GET的请求 . 应该注意的是,GET请求永远不会发生状态更改,因为这违反了HTTP规范 . 引用检查也存在常见的实现错误 . 例如,如果CSRF攻击源自HTTPS域,则将省略引用者 . 在这种情况下,当请求执行状态更改时,缺少引用程序应被视为攻击 . 另请注意,攻击者对引用者的影响有限 . 例如,如果受害者的域名是“site.com”,则攻击者的CSRF漏洞源自“site.com.attacker.com”,这可能会欺骗破坏的引用者检查实施 . XSS可用于绕过引用者检查 .

  • 39

    唯一正确的答案是“除其他外,使用推荐人不适用于浏览器(或公司代理人)不发送推荐人的用户 . ”话虽如此,现在这种情况非常罕见 . 所有人都说推荐人可以被伪造充满了它 . 除非您以其他方式控制其他人的浏览器(XSS / Trojan / etc),否则您不能伪造推荐人 . 如果您需要推荐用于应用程序,它们与CSRF令牌一样有效 . 只要确保你100%确定你的支票是正确的(例如,如果你正在使用正则表达式,请确保从引用者的开头“^”检查) .

  • -7

    还不够,攻击者很容易为客户端做到这一点,正如你所问,攻击者必须做的就是让用户点击他创建的链接,从那时起,游戏结束

    攻击者将复制原始站点中使用的表单,并欺骗其余部分,因为现在代码在他自己的站点上,然后将其提交给受害者站点

    正如你在这个问题上提到的那样,在防止CSRF时,令牌是常态

  • 11

    遵循规范:使用令牌 .

    检查引用者实际上什么也没做,因为无论如何请求来自该页面!您试图阻止的问题是在没有用户做任何事情的情况下请求页面;不是页面被击中 .

    令牌是防止这种情况的方法 . 您生成一个,将其存储在会话中,然后将其写入HTML,然后在发布时,检查您收到的那个,并查看它是否与您期望的那个匹配 . 如果没有,你就失败了 . 无论哪种方式,您之后都会生成一个新令牌 .

    考虑到如果有多个页面,这会使人们变得混乱也可能是相关的;所以你可能希望每页制作一个不同的标记 .

相关问题