📅  最后修改于: 2020-10-21 05:29:56             🧑  作者: Mango
Cookies也称为浏览器cookie,是存储在浏览器中的小型文本文件。它保存与用户身份有关的所有信息。一旦用户浏览不同的页面,此信息将用于验证用户。
Cookie有两种不同类型-
会话Cookie-这些类型的Cookie保留在浏览器上并保留信息,直到关闭浏览器。打开浏览器后,它将被视为同一用户的新会话。
持久性Cookie-它包含规定的寿命,并在给定寿命内保留在浏览器中。那些使用持久性cookie的网站会跟踪每个用户,即使该浏览器已被用户关闭。
现在让我们讨论Cookie在Phalcon中如何工作。
Phalcon使用Phalcon \ Http \ Response \ Cookies作为cookie的全局存储。 Cookie在发送请求到服务器时存储在Phalcon中。
以下是设置Cookie的语法-
$this->cookies->set(
"",
"",
time
);
考虑以下示例。使用以下代码,我们将在用户登录Web应用程序时创建该用户的Cookie。
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是否存在,并相应地打印该值。
在Phalcon中的Cookie会先加密,然后再作为请求发送到服务器,并在我们收到服务器的适当响应后立即解密。这样可以确保授权用户的安全。
尽管有加密和解密的功能,但始终建议避免将敏感数据存储在cookie中。 cookie加密的配置包含在services.php文件中。
/**
* Enable encryption key for setting values of cookies
*/
$di->set(
"cookies", function () {
$cookies = new Cookies();
$cookies->useEncryption(false);
return $cookies;
}
);
/**
* Set encryption key
*/
$di->set(
"crypt", function () {
$crypt = new Crypt();
$crypt->setKey('AED@!sft56$'); // Use a unique Key!
return $crypt;
}
);
注意–
始终建议在将cookie发送到服务器时使用加密。
如果不使用加密,则所有内部应用程序都会暴露给攻击者。
还建议将小数据和字面量存储在Cookie中。