CSRF请求随机数使得可能进行恶意POST?

问题描述 投票:0回答:1

我正在努力保护csrf保护,但我有一些理解上的困难。也许有人可以给我我所需要的见解:)。

我的理解

说我们没有csrf保护。某人使用其凭据登录到网站A。有效登录后,会话cookie将存储在浏览器中。用户通过表单过帐一些数据,服务器可以毫无问题地接受它。由于我们没有csrf保护,因此这会给系统带来漏洞。

用户访问了另一个网站B,一个类似网络钓鱼的恶意网站。该网站在后台以一些javascript xhr请求发布到网站A。浏览器已为网站A存储了cookie,并且由于用户已经登录,因此这是有效会话。因此,网站A将毫不费力地接受该帖子。

要解决此csrf保护问题,请执行以下操作。从服务器在网站A上将带有表单的页面加载到页面后,将生成一个随机数(一次性代码)。此代码必须与表单一起提交,以便服务器可以检查此帖子是否来自请求表单的同一会话。如果代码与刚刚生成的代码相同,则接受该表单。如果代码丢失或不正确,则服务器拒绝。

问题

[如果恶意网站B首先向呈现表单的页面发出获取请求。之后将能够获取令牌以与发布请求一起发送。对?我是否缺少明显的东西?

谢谢!

security csrf
1个回答
0
投票

[我了解您担心的是,恶意网站可以请求您的反CSRF令牌。

您将需要防止跨域读取或嵌入返回CSRF令牌的页面或端点。要记住的重要事情之一是CORS不提供CSRF保护,因为预检CORS请求并不总是由浏览器执行的,例如在使用常规html表单时。

[大多数现代浏览器默认会阻止跨源请求。当您确实需要针对自己的域的跨源请求时,可以通过设置正确的跨源标头(例如Access-Control-Allow-Origin: sub.domain.com)来做到这一点。为了防止嵌入到iframe中,可以实现X-Frame-Options:DENYSAMEORIGIN

您可以在https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy中找到更多信息

© www.soinside.com 2019 - 2024. All rights reserved.