📜  Phalcon-Cookie管理

📅  最后修改于: 2020-10-21 05:29:56             🧑  作者: Mango


Cookies也称为浏览器cookie,是存储在浏览器中的小型文本文件。它保存与用户身份有关的所有信息。一旦用户浏览不同的页面,此信息将用于验证用户。

Cookie有两种不同类型-

  • 会话Cookie-这些类型的Cookie保留在浏览器上并保留信息,直到关闭浏览器。打开浏览器后,它将被视为同一用户的新会话。

  • 持久性Cookie-它包含规定的寿命,并在给定寿命内保留在浏览器中。那些使用持久性cookie的网站会跟踪每个用户,即使该浏览器已被用户关闭。

现在让我们讨论Cookie在Phalcon中如何工作。

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是否存在,并相应地打印该值。

Cookies的加密

在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中。