Phalcon - Cookie 管理



Cookie 也稱為瀏覽器 Cookie,是儲存在瀏覽器中的小型文字檔案。它儲存與使用者身份相關的所有資訊。此資訊用於在使用者瀏覽不同頁面時驗證使用者。

Cookie 有兩種不同的型別:

  • 會話 Cookie - 這些型別的 Cookie 保留在瀏覽器中並保留資訊,直到瀏覽器關閉。瀏覽器一旦開啟,將被視為同一使用者的全新會話。

  • 持久 Cookie - 它包含一個規定的生命週期,並在給定的生命週期內保留在瀏覽器中。使用持久 Cookie 的那些網站會跟蹤每個使用者,即使使用者關閉了瀏覽器。

現在讓我們討論 Cookie 在 Phalcon 中是如何工作的。

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 將顯示為輸出。

Displayed Output

描述

名為“loginAction”的 Cookie 已建立,值為“abc”

方法“indexAction”檢查 Cookie 是否存在並相應地列印值。

Cookie 的加密

Phalcon 中的 Cookie 在作為請求傳送到伺服器之前會被加密,並在我們從伺服器獲得適當響應後立即解密。這確保了授權使用者的安全性。

儘管具有加密和解密功能,但始終建議避免在 Cookie 中儲存敏感資料。Cookie 加密的配置包含在services.php檔案中。

Encription

/** 
   * 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 中儲存少量資料和文字。

廣告