首页 文章

Laravel的CSRF令牌和负载 balancer

提问于
浏览
7

考虑这种情况:

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

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

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

});

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

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

1 回答

  • 2

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

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

    文件会话驱动程序不应该通常工作 .

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

相关问题