Phalcon - Quản lý cookie

Cookies còn được gọi là browser cookieslà các tệp văn bản nhỏ được lưu trữ trong trình duyệt. Nó lưu tất cả các thông tin liên quan đến danh tính người dùng. Thông tin này được sử dụng để xác thực người dùng khi họ duyệt qua các trang khác nhau.

Có hai loại Cookie khác nhau -

  • Session Cookies- Các loại cookie này ở trên trình duyệt và lưu giữ thông tin cho đến khi trình duyệt bị đóng. Ngay sau khi trình duyệt được mở, nó sẽ được coi là một phiên mới cho cùng một người dùng.

  • Persistent Cookies- Nó bao gồm tuổi thọ quy định và vẫn tồn tại trong trình duyệt trong khoảng thời gian nhất định. Những trang web sử dụng cookie liên tục sẽ theo dõi từng người dùng, ngay cả khi người dùng đóng trình duyệt.

Bây giờ chúng ta hãy thảo luận về cách cookie hoạt động trong Phalcon.

Cookie trong Phalcon

Phalcon sử dụng Phalcon\Http\Response\Cookiesnhư một kho lưu trữ toàn cầu cho cookie. Cookie được lưu trữ trong Phalcon trong khi gửi yêu cầu đến máy chủ.

Sau đây là cú pháp để thiết lập Cookie:

$this->cookies->set( 
   "<cookie-name>", 
   "<cookie-value>", 
   time 
);

Hãy xem xét ví dụ sau. Sử dụng đoạn mã sau, chúng tôi sẽ tạo cookie của người dùng khi người dùng đăng nhập vào ứng dụng web.

<?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 
      ); 
   } 
}

Các cookie được mã hóa sẽ được hiển thị dưới dạng đầu ra.

Sự miêu tả

Cookie có tên “loginAction” đã được tạo ra với giá trị “abc”.

Phương pháp “indexAction” kiểm tra xem cookie có tồn tại hay không và in giá trị tương ứng.

Mã hóa Cookie

Cookie trong Phalcon được mã hóa trước khi gửi đến máy chủ theo yêu cầu và được giải mã ngay khi chúng tôi nhận được phản hồi thích hợp từ máy chủ. Điều này đảm bảo tính bảo mật của người dùng được ủy quyền.

Nó luôn được đề xuất để tránh lưu trữ dữ liệu nhạy cảm trong cookie, mặc dù có chức năng mã hóa và giải mã. Cấu hình mã hóa cookie được bao gồm trongservices.php tập tin.

/** 
   * 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; 
   } 
);

Note -

  • Nó luôn được đề xuất sử dụng mã hóa trong khi gửi cookie đến máy chủ.

  • Nếu mã hóa không được sử dụng, tất cả các ứng dụng nội bộ sẽ bị lộ trước kẻ tấn công.

  • Bạn cũng nên lưu trữ dữ liệu nhỏ và các ký tự trong cookie.