Laravel的CSRF令牌和负载平衡

时间:2015-03-29 12:44:15

标签: php session laravel csrf

考虑这种情况:

应用程序的登录路由受Laravel的CSRF过滤器保护:

Route::group(array('before' => 'csrf'), function() {

    Route::post('/doLogin', array('as' => 'doLogin', 'uses' => 'MainController@doLogin'));

});

应用程序位于负载均衡器后面,每个请求随机发送到server01server02。 Laravel配置为在数据库中保存会话,数据库由server01server02共享。要遵循的标准路径是:用户访问/,将其凭据输入登录表单,然后将这些凭据提交给/doLogin/检查令牌,处理凭据,并将用户返回{ {1}}出错,或/home成功。

我的问题是:由于无法保证访问/上的server01的用户会在/doLogin上发布server01,因此Laravel&# 39;内置的CSRF令牌有效吗?或者由于令牌存储在Session中,无论LB最终分配哪个服务器,它都能正常工作吗?

2 个答案:

答案 0 :(得分:2)

如果在这些服务器之间共享会话,CSRF将无论其命中哪台服务器都能正常工作。

数据库,Cookie和memcached / redis会话驱动程序都很好。

文件会话驱动程序通常不能正常工作。

将来自客户端的CSRF令牌与会话中的CSRF令牌进行比较。

答案 1 :(得分:1)

您应使用 cookie 数据库驱动程序进行会话处理。

有关更多信息,请阅读laravel session doc