CakePHP
  • Documentation
    • Book
    • API
    • Videos
    • Reporting Security Issues
    • Privacy Policy
    • Logos & Trademarks
  • Business Solutions
  • Swag
  • Road Trip
  • Team
  • Community
    • Community
    • Get Involved
    • Issues (Github)
    • Bakery
    • Featured Resources
    • Training
    • Meetups
    • My CakePHP
    • CakeFest
    • Newsletter
    • Linkedin
    • YouTube
    • Facebook
    • Twitter
    • Mastodon
    • Help & Support
    • Forum
    • Stack Overflow
    • IRC
    • Slack
    • Paid Support
CakePHP

C CakePHP 3.10 Red Velvet API

  • Project:
    • CakePHP
      • CakePHP
      • Authentication
      • Authorization
      • Chronos
      • Elastic Search
      • Queue
  • Version:
    • 3.10
      • 5.2
      • 5.1
      • 5.0
      • 4.6
      • 4.5
      • 4.4
      • 4.3
      • 4.2
      • 4.1
      • 4.0
      • 3.10
      • 3.9
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

Namespaces

  • Global
  • Cake
    • Auth
    • Cache
    • Collection
    • Command
    • Console
    • Controller
    • Core
    • Database
    • Datasource
    • Error
    • Event
    • Filesystem
    • Form
    • Http
      • Client
      • Cookie
      • Exception
      • Middleware
      • Session
    • I18n
    • Log
    • Mailer
    • Network
    • ORM
    • Routing
    • Shell
    • TestSuite
    • Utility
    • Validation
    • View

Class EncryptedCookieMiddleware

Middlware for encrypting & decrypting cookies.

This middleware layer will encrypt/decrypt the named cookies with the given key and cipher type. To support multiple keys/cipher types use this middleware multiple times.

Cookies in request data will be decrypted, while cookies in response headers will be encrypted automatically. If the response is a Cake\Http\Response, the cookie data set with withCookie() and `cookie()`` will also be encrypted.

The encryption types and padding are compatible with those used by CookieComponent for backwards compatibility.

Namespace: Cake\Http\Middleware

Property Summary

  • $_validCiphers protected
    string[]

    Valid cipher names for encrypted cookies.

  • $cipherType protected
    string

    Encryption type.

  • $cookieNames protected
    array

    The list of cookies to encrypt/decrypt

  • $key protected
    string

    Encryption key to use.

Method Summary

  • __construct() public

    Constructor

  • __invoke() public

    Apply cookie encryption/decryption.

  • _checkCipher() protected

    Helper method for validating encryption cipher names.

  • _decode() protected

    Decodes and decrypts a single value.

  • _decrypt() protected

    Decrypts $value using public $type method in Security class

  • _encrypt() protected

    Encrypts $value using public $type method in Security class

  • _explode() protected

    Explode method to return array from string set in CookieComponent::_implode() Maintains reading backwards compatibility with 1.x CookieComponent::_implode().

  • _getCookieEncryptionKey() protected

    Fetch the cookie encryption key.

  • _implode() protected

    Implode method to keep keys are multidimensional arrays

  • decodeCookies() protected

    Decode cookies from the request.

  • encodeCookies() protected

    Encode cookies from a response's CookieCollection.

  • encodeSetCookieHeader() protected

    Encode cookies from a response's Set-Cookie header

Method Detail

__construct() ¶ public

__construct(array $cookieNames, string $key, string $cipherType = 'aes')

Constructor

Parameters
array $cookieNames

The list of cookie names that should have their values encrypted.

string $key

The encryption key to use.

string $cipherType optional

The cipher type to use. Defaults to 'aes', but can also be 'rijndael' for backwards compatibility.

__invoke() ¶ public

__invoke(Psr\Http\Message\ServerRequestInterface $request, Psr\Http\Message\ResponseInterface $response, callable $next): Psr\Http\Message\ResponseInterface

Apply cookie encryption/decryption.

Parameters
Psr\Http\Message\ServerRequestInterface $request

The request.

Psr\Http\Message\ResponseInterface $response

The response.

callable $next

The next middleware to call.

Returns
Psr\Http\Message\ResponseInterface

_checkCipher() ¶ protected

_checkCipher(string $encrypt): void

Helper method for validating encryption cipher names.

Parameters
string $encrypt

The cipher name.

Returns
void
Throws
RuntimeException
When an invalid cipher is provided.

_decode() ¶ protected

_decode(string $value, string|false $encrypt, string|null $key): string|array

Decodes and decrypts a single value.

Parameters
string $value

The value to decode & decrypt.

string|false $encrypt

The encryption cipher to use.

string|null $key

Used as the security salt if specified.

Returns
string|array

_decrypt() ¶ protected

_decrypt(string[]|string $values, string|false $mode, string|null $key = null): string|array

Decrypts $value using public $type method in Security class

Parameters
string[]|string $values

Values to decrypt

string|false $mode

Encryption mode

string|null $key optional

Used as the security salt if specified.

Returns
string|array

_encrypt() ¶ protected

_encrypt(string|array $value, string|false $encrypt, string|null $key = null): string

Encrypts $value using public $type method in Security class

Parameters
string|array $value

Value to encrypt

string|false $encrypt

Encryption mode to use. False disabled encryption.

string|null $key optional

Used as the security salt if specified.

Returns
string

_explode() ¶ protected

_explode(string $string): string|array

Explode method to return array from string set in CookieComponent::_implode() Maintains reading backwards compatibility with 1.x CookieComponent::_implode().

Parameters
string $string

A string containing JSON encoded data, or a bare string.

Returns
string|array

_getCookieEncryptionKey() ¶ protected

_getCookieEncryptionKey(): string

Fetch the cookie encryption key.

Part of the CookieCryptTrait implementation.

Returns
string

_implode() ¶ protected

_implode(array $array): string

Implode method to keep keys are multidimensional arrays

Parameters
array $array

Map of key and values

Returns
string

decodeCookies() ¶ protected

decodeCookies(Psr\Http\Message\ServerRequestInterface $request): Psr\Http\Message\ServerRequestInterface

Decode cookies from the request.

Parameters
Psr\Http\Message\ServerRequestInterface $request

The request to decode cookies from.

Returns
Psr\Http\Message\ServerRequestInterface

encodeCookies() ¶ protected

encodeCookies(Cake\Http\Response $response): Cake\Http\Response

Encode cookies from a response's CookieCollection.

Parameters
Cake\Http\Response $response

The response to encode cookies in.

Returns
Cake\Http\Response

encodeSetCookieHeader() ¶ protected

encodeSetCookieHeader(Psr\Http\Message\ResponseInterface $response): Psr\Http\Message\ResponseInterface

Encode cookies from a response's Set-Cookie header

Parameters
Psr\Http\Message\ResponseInterface $response

The response to encode cookies in.

Returns
Psr\Http\Message\ResponseInterface

Property Detail

$_validCiphers ¶ protected

Valid cipher names for encrypted cookies.

Type
string[]

$cipherType ¶ protected

Encryption type.

Type
string

$cookieNames ¶ protected

The list of cookies to encrypt/decrypt

Type
array

$key ¶ protected

Encryption key to use.

Type
string
OpenHub
Pingping
Linode
  • Business Solutions
  • Showcase
  • Documentation
  • Book
  • API
  • Videos
  • Reporting Security Issues
  • Privacy Policy
  • Logos & Trademarks
  • Community
  • Get Involved
  • Issues (Github)
  • Bakery
  • Featured Resources
  • Training
  • Meetups
  • My CakePHP
  • CakeFest
  • Newsletter
  • Linkedin
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • Help & Support
  • Forum
  • Stack Overflow
  • IRC
  • Slack
  • Paid Support

Generated using CakePHP API Docs