Laravel 会话变量安全吗?

Are Laravel session variables secure?

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

他们将不得不 运行 在您的服务器上编写代码(类似于 Session::put('key', 'value');).. 或者利用您的应用程序中可能存在的漏洞。

如果您谨慎地使用 Session(验证等),除非您更新它,否则它应该保持不变。

有关 Laravel 的 Session 的更多信息,请点击此处:http://laravel.com/docs/4.2/session

Is there any (known) way for end users to edit a Laravel 4 session variable?

是的,但前提是您竭尽全力让它成为可能。所需的步骤是:

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

如果您执行这些不明智的步骤,除了允许用户覆盖会话数据外,this is a risk for PHP object injection via unserialize()

建议:如果您要将会话状态存储在 cookie 中,请确保将其包装在 authenticated encryption 中。 Laravel 的加密库采用经过身份验证的加密(先加密然后 MAC),会话默认使用它。


至于其他驱动,那要看你的网络拓扑了。如果您的数据库位于另一台服务器上,并且您的攻击者可以冒充 Web 服务器,他们可以将他们想要的任何内容放入数据库中。

我最后检查过,Laravel 默认加密会话数据(除非您禁用加密)。除非您的数据库与网络服务器位于同一主机上,否则请将其打开。