【发布时间】:2015-10-06 06:27:41
【问题描述】:
各位,我在 Laravel 5 中的 CSRF 和 ajax 调用遇到了很多麻烦。
我在标头中的每个 ajax 调用中发送 X-CSRF 令牌,如下所述:http://laravel.com/docs/master/routing#csrf-x-csrf-token
问题是,随机无法验证令牌,我最终得到以下错误:
TokenMismatchException in VerifyCsrfToken.php line 46:
它最终会在 10 次调用中发生 1 次,但仍然使我的应用程序表现不佳,因为它非常依赖这些 ajax 调用。
所以我在这里发布了这个问题,但我得到的最佳回应是“禁用 CSRF”。
我有两个问题:
1) 为 ajax 调用禁用 CSRF 会使我的网站易受攻击吗?
和
2) 如果我找不到其他方法只能禁用 CSRF,是否还有其他方法可以保护?
【问题讨论】:
-
如果您禁用 ajax 调用的 CSRF 验证,您的服务器将允许外部请求,例如 Web 服务或 Web API;因此,如果有人知道 url 和变量,他可以向您的服务器调用 ajax 请求,并且您的服务器会允许它;就是这样,如果你不关心这个,也许你不会有任何问题。
-
好吧,我的代码正在检查进行 ajax 调用的用户是否有权执行他想要的操作,如果他已登录,我想他可以发送任何他想要的调用..所以我应该没事吧?是否有任何类型的滥用可以由此产生?可能是垃圾邮件发送者或攻击者?
-
@CarlosHerreraPlata 可能有一些错误。基于用户会话的 CSRF 攻击。您不能仅使用 url 伪造会话。在大多数情况下,ajax 没有真正的风险,因为所有现代浏览器都阻止了 ajax 跨域。除非你强制允许
Cross-Origin XMLHttpRequest允许 ajax 跨域。
标签: php ajax laravel laravel-5 csrf