在我的网络应用程序中禁用 CSRF 或更安全的方法

Disabling CSRF in my web app or a safer approach

我正在 Laravel 中创建网络应用程序,但 CSRF 正在终止其 ajax 功能。

使用 ajax 提交令牌工作正常,使用 ajaxSetup 我可以将令牌附加到每个请求,所以这部分没有问题。

但每次用户离开浏览器 window 太久(可能几个小时或更长时间)ajax 请求开始返回 error 500(令牌不匹配)- 可能是服务器更新令牌,客户端保留旧令牌,迫使用户刷新页面以保持其功能,这是我不想做的事情。

所以我正在考虑创建某种 ajax 计时器以每隔一段时间从服务器获取更新的 csrf 令牌..但这似乎是一个 hackish 解决方案,甚至没用? (如果我提供令牌,有人可以请求它并仍然进行 csrf 攻击,对吗?)

要一劳永逸地解决这个问题,我将不得不做一些更冒险的事情,为 ajax 调用完全禁用 CSRF。我的问题是:这真的会严重伤害我的安全吗?我看到很多人建议关闭它,但如果有人可以交叉请求对用户帐户执行敏感操作(例如删除帐户或类似的操作),这似乎是一个大问题

你们会推荐什么?这个问题让我彻夜难眠:/

我现在只有一个选项...

您可以开始查看应用程序上的 CORS 配置。

正在更改 Access-Control-Allow-Origin headers 几个 routesreference