我只是想知道laravel CSRF保护真正增加了多少。
如果我错了,请纠正我的错误,但是一旦你获得一次会话,你不能只刮掉页面的内容吗?
Laravel抓取耦合到会话的CSRF令牌,并将其作为AJAX请求的元标记添加到页面中。
<meta name="csrf-token" content="{{ csrf_token() }}">
https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token
当然,如果你不需要AJAX功能,你可以删除元标记,但是让我们说你不会。
一旦您准备好会话,CSRF将在会话中保持不变。当然,这对于某人设置来说需要做很多工作,但这不是CSRF令牌可能的解决方法吗?我想有一层保护措施可以防止非常容易的copy/paste
CSRF攻击。
只是好奇,希望有人可以扩展这个。
修改
我知道CSRF是如何运作的,人们对Laravel如何处理CSRF以及他们期望如何工作感到困惑。人们希望每个请求都能重新生成一个CSRF令牌,但Laravel的情况并非如此:
https://github.com/illuminate/session/blob/master/Store.php#L72
如果您不顺便为多个请求存储CSRF令牌,我也不会看到如何验证AJAX CSRF请求。
https://security.stackexchange.com/questions/22903/why-refresh-csrf-token-per-form-request
这深入了解为什么为每个请求生成CSRF令牌是一个坏主意。
答案 0 :(得分:0)
Is it possible to break CSRF token validation using file_get_contents in PHP
即使有人废弃并提取了csrf令牌,他也需要另一个http请求,反过来又会创建另一个令牌。所以所有的努力都是徒劳的。
注意:我已将它放在答案部分,因为我没有足够的声誉将它放在评论中。感谢