【发布时间】:2017-04-13 16:48:54
【问题描述】:
我目前正在开发一个关于 Laravel 的应用程序,这是一个在线测验。有恢复用户会话的功能。
这意味着如果用户在测验期间重新加载页面,他的会话将恢复他填写的回答。每次他对答案进行一些更改时,我都会使用 ajax 来存储用户会话。
所以,问题是如果用户选择答案的速度足够快以产生并发请求,Laravel 会终止用户会话,因此表单的 CSRF 令牌变得无效。
为解决此问题,我已禁用 ajax 请求的 CSRF 验证,因为我认为此请求不处理网站的任何敏感信息。
所以我想知道对此类路由禁用 CSRF 验证是否正确,或者我应该找到不同的解决方案?
【问题讨论】:
-
为什么 Laravel 会终止会话? (好奇,因为我没用过 Laravel。)
-
@OliverCharlesworth 因为我想来自同一个令牌的请求太多了,因为到目前为止我还没有找到一个可靠的理由。这是满足该场景的唯一理论。
-
@OliverCharlesworth 正如我所读到的,如果来自同一用户的多个并发请求,它会终止会话。
-
修复它并保留 CSRF 保护的最简单方法是在移动到下一页时保存数据。每次用户更改某些内容时,我真的不会保存数据。随着用户数量的增加,您的服务器会崩溃,并且会产生不必要的流量。
标签: php ajax laravel csrf csrf-protection