【发布时间】:2021-08-09 10:20:37
【问题描述】:
Laravel 文档说:
Laravel 自动为应用程序管理的每个活动用户会话生成一个 CSRF“令牌”。此令牌用于验证经过身份验证的用户是实际向应用程序发出请求的人。由于此令牌存储在用户的会话中,并且每次会话重新生成时都会更改,因此恶意应用程序无法访问它。
Laravel 配置 session.php 文件保证 session cookie 的生命周期默认为 120 分钟:
'lifetime' => env('SESSION_LIFETIME', 120)
让我们想象一下,例如,我在 Laravel 应用程序中进行身份验证并接收会话 cookie。如果在身份验证后的 120 分钟内我将访问恶意网站并受到 CSRF 攻击,会发生什么情况?当然,考虑到 cors.php 配置设置为允许接受任何 (*) 来源 ('allowed_origins' => ['*'])。
以我目前的理解,在认证浏览器后的这 120 分钟内有会话 cookie,所以如果我去恶意网站并受到 CSRF 攻击,攻击会成功。
如果我目前的理解有误,请纠正我?
【问题讨论】:
-
我认为任何安全功能都不能保证 100% 的保护。总是有洞。这就是为什么您应该考虑使用多种验证方法来消除损害应用程序的不需要的请求。
-
100% 安全防范什么?即使您在应用程序的某些地方使用 CSRF 令牌,它也可能在其他地方容易受到攻击