【问题标题】:CSRF protection for ajax requestsajax 请求的 CSRF 保护
【发布时间】:2019-01-25 08:41:49
【问题描述】:

在laravel documentation 中,对于基于 ajax 的应用程序,有通过 HTML 元标记和检查标头请求的 CSRF 保护。

为什么需要这个方法,为什么不像往常一样检查 ajax 请求?我的意思是,如果对于使用 POST 方法的 ajax,则将 CSRF 令牌作为通常的参数发送(例如 csrf_token),然后检查服务器端(PHP):

if ( !isset($_POST['csrf_token']) OR $_POST['csrf_token'] !== $_SESSION['csrf_token'] ) {
    // incorrect csrf token, stop processing
}

检查头请求比这种方法有一些优势吗?

【问题讨论】:

    标签: php ajax csrf-protection


    【解决方案1】:

    如果您正在执行 POST 请求,CSRF 不会通过标头而是通过 http 消息正文,Laravel 有某种用于 csrf 保护的默认中间件,问题出在哪里? 如果你进入 assets/js 文件夹,你可以在 bootstrap.js 中看到 CSRF 令牌。

    您可以从全局 Javascript 变量中获取 CSRF 令牌并通过 ajax 发布请求正文发送它。

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 2015-10-06
      • 2015-10-15
      • 2017-09-01
      • 2014-02-19
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      相关资源
      最近更新 更多