针对Ajax请求的CSRF保护

时间:2018-08-18 15:20:47

标签: php ajax csrf-protection

laravel documentation中,对于基于Ajax的应用程序,可以通过HTML元标记和cheking标头请求提供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
}

Cheking标头请求比这种方法有什么优势吗?

1 个答案:

答案 0 :(得分:0)

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

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