Laravel会话变量安全吗?


Are Laravel session variables secure?

最终用户是否有任何(已知的)方法来编辑Laravel会话变量?

最终用户是否有任何(已知的)方法来编辑Laravel 4会话变量?

是的,有,但前提是你要努力使它成为可能。所需的步骤如下:

  1. 为会话使用cookie驱动程序(它将所有会话数据存储到cookie中,而不是简单地在cookie中存储标识符并将实际数据保存在服务器端)。我一般不建议在cookie中存储会话状态
  2. 关闭会话加密,文档强烈建议不要这样做。

如果你做了这些不明智的步骤,除了允许用户覆盖会话数据之外,这是通过unserialize()注入PHP对象的风险。

建议:如果你打算在cookie中存储会话状态,请确保它被封装在经过身份验证的加密中。Laravel的加密库采用身份验证加密(加密然后MAC),会话默认使用这个。


至于其他驱动程序,这取决于您的网络拓扑。如果您的数据库在另一台服务器上,而攻击者可以冒充web服务器,那么他们可以在数据库中放入任何他们想要的东西。

上次我检查,Laravel默认加密会话数据(除非你禁用加密)。除非您的数据库与web服务器在同一台主机上,否则请保持打开状态。

他们必须在您的服务器上运行代码(如Session::put('key', 'value');)。或者利用应用程序中可能存在的漏洞。

如果你正在小心地使用会话(验证等),它应该保持不变,除非你更新它。

更多关于Laravel的会议在这里:http://laravel.com/docs/4.2/session