【发布时间】:2016-01-08 02:58:22
【问题描述】:
我正在 Laravel 中创建一个网络应用程序,但 CSRF 正在扼杀它的 ajax 功能。
使用 ajax 提交令牌可以正常工作,使用 ajaxSetup 我可以将令牌附加到每个请求,所以这部分没有问题。
但是每次用户离开浏览器窗口太久(可能是几个小时或更长时间)时,ajax 请求开始返回error 500(令牌不匹配) - 也许服务器更新令牌而客户端保留旧令牌,迫使用户刷新页面以保持其功能,这是我不想做的事情。
所以我正在考虑创建某种 ajax 计时器,以每隔一段时间从服务器获取更新的csrf 令牌。但这似乎是一个有点骇人听闻的解决方案,甚至可能没用? (如果我提供令牌,有人可以请求它并仍然进行 csrf 攻击,对吧?)
为了一劳永逸地解决这个问题,我必须做一些更冒险的事情,完全禁用 CSRF 来进行 ajax 调用。我的问题是:这真的会对我的安全造成那么严重的伤害吗?我看到很多人建议关闭它,但如果有人可以交叉请求用户帐户上的敏感操作(例如删除帐户或类似的东西),这似乎很重要
你们会推荐什么?这个问题让我彻夜难眠:/
【问题讨论】:
标签: javascript ajax laravel-5 csrf csrf-protection