正确的CORS设置是否会阻止XSRF?

正确的CORS设置是否会阻止XSRF?,cors,csrf,Cors,Csrf,如果在服务器上正确设置CORS,只允许特定来源访问服务器,这足以防止XSRF攻击吗?否 CORS支持两个域之间的共享,其中XSRF攻击的方法无论如何都不依赖CORS 我不明白你们所说的“CORS设置正确”是什么意思,但当使用XSRF进行攻击时,浏览器不会在服务器上请求CORS头 CORS不是安全性的:)否 同源策略(CORS允许您选择性地穿孔)防止第三方站点伪装成用户,以便从另一站点读取(私有)数据 跨站点请求伪造攻击是指第三方站点冒充用户向另一站点(作为该用户)提交数据。它不需要读回响应。实际

如果在服务器上正确设置CORS,只允许特定来源访问服务器,这足以防止XSRF攻击吗?

CORS支持两个域之间的共享,其中XSRF攻击的方法无论如何都不依赖CORS

我不明白你们所说的“CORS设置正确”是什么意思,但当使用XSRF进行攻击时,浏览器不会在服务器上请求CORS头

CORS不是安全性的:)

同源策略(CORS允许您选择性地穿孔)防止第三方站点伪装成用户,以便从另一站点读取(私有)数据


跨站点请求伪造攻击是指第三方站点冒充用户向另一站点(作为该用户)提交数据。它不需要读回响应。

实际上CORS确实有助于安全性。CORS对于不同主机之间的XSS和CSRF攻击有很大帮助。如果一个网站存在XSS漏洞,而攻击者想利用该漏洞通过
xmlhttprequest
向另一个网页发送恶意请求,多亏了CORS,他将无法这样做

也许吧 老兄,这是一个艰难的过程,它比其他人提供的要复杂得多。所以“也许”

首先,CORS旨在“放松”同源策略,这是防止特定类型CSRF攻击的默认策略。但是,同一来源并不适用于所有类型的请求

因此,会话需要超时的时间越长,用户在不受信任的站点上冲浪的次数越多,出现CSRF攻击的风险就越高。任何向外部资源发出请求的标记都可以用来执行隐藏的CSRF攻击–包括图像、链接标记、一些元标记、嵌入和对象标记等。加载背景图像或类似内容的属性也可以使用此标记。如果您将应用程序标记头中的DTD文件替换为服务器上的资源,您甚至可以检查您的站点是否已被某人验证,这也是CSRF

例如,请勾选此


;从易受攻击的银行网站获取支票照片,而无需生成原始标题或预飞请求。[…]将显示照片,攻击者可以使用Javascript获取照片数据并将其发送回

但是,至少有一个消息来源建议,将来web服务器可能会在图像上返回带有
Access Control Allow Origin
(CORS)头的图像,从而阻止浏览器渲染图像。这将防止此类CSRF-GET攻击

如果浏览器检查响应中的Access Control Allow Origin标头并拒绝显示它,这将是一种有效的防御


更具体地说,很容易犯这样的错误:如果邪恶网站由于CORS而无法向善良网站发出请求,那么CSRF就会被阻止。然而,有两个问题被忽视了:

  • CORS仅受浏览器的尊重。这意味着谷歌Chrome将服从CORS,不会让邪恶网站向善良网站提出请求。然而,想象一下,有人构建了一个本机应用程序,或者任何有一个表单可以向您的站点发布内容的应用程序。XSRF令牌是防止这种情况发生的唯一方法

  • 很容易忽略CORS仅用于JS请求这一事实。尽管有CORS,但在邪恶网站上发布回善良网站的常规表单仍然有效


  • 由于这些原因,CORS不是XSRF令牌的好替代品。最好两者都使用。

    应该用粗体大写:“CORS不安全!”CORS只指定允许向服务器发送何种类型的跨源请求。它不应该取代良好的安全实践。哈,谢谢!事实上,我说的是一般性的,你的回答很好。不过还是要谢谢你的更新:)我想我想说的是,有人能伪造一个源标题吗?如果是这样的话,CORS或同源策略不会崩溃吗?@programmerdave一个被黑客攻击或受损的浏览器可能会导致这种情况。CORS背后的理念依赖于用户的浏览器是否可信。答案没有说明为什么或如何,XSRF/CSRF代表用户提出非法请求<例如,代码>站点A调用
    站点B/注销
    。严格的CORS策略防止跨站点JS调用,所以how come.CORS在这里不提供任何额外的安全性。在CORS规范之前,相同的xhr发起的请求会被浏览器直接拒绝。但它可以,对吗?例如,CSRF get可以从易受攻击的银行站点获取支票照片,而无需生成原始标头或预飞行请求。[…]将显示照片,攻击者可以使用Javascript获取照片数据并将其发送回,您认为CSRF攻击仅限于“提交”数据的假设似乎是错误的。此外,CSRF无法纠正这种情况也是错误的(尽管ymmv甚至在现代浏览器中也有),如果浏览器检查响应中的Access Control Allow Origin头并拒绝显示,这将是一种有效的防御。(同一来源)@EvanCarroll-回应你的第一个评论:使用这样的图像会触发CSRF攻击。由于本答案中所述的原因,CORS无法阻止这种情况。攻击者可以向用户显示图像(这在网络钓鱼攻击中可能很有用),但他们无法让浏览器向攻击者发送图像副本(或从图像中提取的数据)(因为同源策略会阻止它)。您的来源是错误的。@EvanCarroll-作为对您第二条评论的回应:通过将数据嵌入通过图像标记加载的URL的查询字符串而提交给服务器的数据仍然提交。“如果浏览器检查Access Control Allow Origin标题”-没有浏览器会这样做,因此这与关于创作网站的讨论无关。“这将是一场有效的比赛