Phalcon - Cookie 管理
Cookie 也称为 浏览器 Cookie,是存储在浏览器中的小型文本文件。它保存与用户身份相关的所有信息。这些信息用于在用户浏览不同页面时验证用户身份。
Cookie 有两种不同类型 −
会话 Cookie − 这些类型的 Cookie 会保留在浏览器中并保留信息,直到浏览器关闭。一旦打开浏览器,它将被视为同一用户的新会话。
持久性 Cookie − 它具有规定的使用寿命,并在给定的使用寿命内保留在浏览器中。那些使用持久性 cookie 的网站会跟踪每个用户,即使用户关闭了浏览器也是如此。
现在让我们讨论一下 Phalcon 中的 cookie 是如何工作的。
Phalcon 中的 Cookie
Phalcon 使用 Phalcon\Http\Response\Cookies 作为 cookie 的全局存储。在向服务器发送请求时,Cookie 会存储在 Phalcon 中。
以下是设置 Cookie 的语法 −
$this->cookies->set( "<cookie-name>", "<cookie-value>", time );
考虑以下示例。使用以下代码,我们将在用户登录 Web 应用程序时创建用户的 cookie。
<?php class UsersController extends \Phalcon\Mvc\Controller { public function indexAction() { if ($this->cookies->has("login-action")) { // Get the cookie $loginCookie = $this->cookies->get("login-action"); // Get the cookie's value $value = $loginCookie->getValue(); echo($value); } $this->cookies->set( "login-action", "abc", time() + 15 * 86400 ); } }
加密的 cookie 将显示为输出。
描述
名为 "loginAction" 的 Cookie 已创建,值为 "abc"。
方法 "indexAction" 检查 cookie 是否存在并相应地打印值。
Cookie 的加密
Phalcon 中的 Cookie 在作为请求发送到服务器之前会进行加密,并在我们从服务器收到适当的响应后立即解密。这确保了授权用户的安全。
尽管具有加密和解密功能,但始终建议避免在 cookie 中存储敏感数据。 services.php 文件中包含了 cookie 加密的配置。
/** * 启用加密密钥来设置 Cookie 的值 */ $di->set( "cookies", function () { $cookies = new Cookies(); $cookies->useEncryption(false); return $cookies; } ); /** * 设置加密密钥 */ $di->set( "crypt", function () { $crypt = new Crypt(); $crypt->setKey('AED@!sft56$'); // 使用唯一的密钥! return $crypt; } );
注意 −
始终建议在向服务器发送 cookie 时使用加密。
如果不使用加密,所有内部应用程序都将暴露给攻击者。
还建议在 cookie 中存储小数据和文字。