【问题标题】:how to set secure flag on cookies in laravel如何在 laravel 中的 cookie 上设置安全标志
【发布时间】:2018-04-28 05:30:34
【问题描述】:

我想在通过 HTTPS 访问内容时为 cookie 数据设置安全标志。

cookie 用于整个应用程序,因此需要全局配置以保护所有 cookie。

【问题讨论】:

  • 安全标志是什么意思?
  • 在核心 PHP 中创建 cookie 时,它​​们是使 cookie 安全的安全参数之一。如果 cookie 不安全,则不会对其进行加密。

标签: php security cookies laravel-5


【解决方案1】:

您需要使用 session_set_cookie_params 覆盖默认设置,将 $secure 标志设置为 true,

void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )

更多信息php.net

在 laravel 中你需要更改 config/session.php 配置,将安全标志设置为 true

/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you if it can not be done securely.
|
*/

'secure' => true,

在较新版本的 laravel 中,您可以简单地在 .env 文件中设置 SESSION_SECURE_COOKIE=true

【讨论】:

  • 配置文件中的那一行在新版本的 Laravel 中如下所示:'secure' => env( 'SESSION_SECURE_COOKIE', true ),
【解决方案2】:

您可以在config/session.php文件中设置secure的值true,如下图所示;

'secure' => env( 'SESSION_SECURE_COOKIE', true ),

【讨论】:

  • 如果 .env 文件包含 SESSION_SECURE_COOKIE=false,这行代码实际上可能不会将 secure 设置为 true。传递给 env 辅助方法的第二个参数只是将默认值设置为 true,并且仅在 .env 文件中不存在 SESSION_SECURE_COOKIE 环境变量时使用。
猜你喜欢
  • 2010-11-29
  • 2017-09-11
  • 2020-01-11
  • 2016-09-11
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2015-12-12
  • 2022-01-07
相关资源
最近更新 更多