\Cake\Http\MiddlewareEncryptedCookieMiddleware

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.

Summary

Methods
Properties
Constants
__construct()
__invoke()
No public properties found
No constants found
_getCookieEncryptionKey()
_encrypt()
_checkCipher()
_decrypt()
_decode()
_implode()
_explode()
decodeCookies()
encodeCookies()
encodeSetCookieHeader()
$_validCiphers
$cookieNames
$key
$cipherType
N/A
No private methods found
No private properties found
N/A

Properties

$_validCiphers

$_validCiphers : array

Valid cipher names for encrypted cookies.

Type

array

$cookieNames

$cookieNames : array

The list of cookies to encrypt/decrypt

Type

array

$key

$key : string

Encryption key to use.

Type

string

$cipherType

$cipherType : string

Encryption type.

Type

string

Methods

__construct()

__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

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

_getCookieEncryptionKey()

_getCookieEncryptionKey() : string

Fetch the cookie encryption key.

Part of the CookieCryptTrait implementation.

Returns

string

_encrypt()

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

Encrypts $value using public $type method in Security class

Parameters

string $value

Value to encrypt

string|boolean $encrypt

Encryption mode to use. False disabled encryption.

string|null $key

Used as the security salt if specified.

Returns

string —

Encoded values

_checkCipher()

_checkCipher(string  $encrypt) : void

Helper method for validating encryption cipher names.

Parameters

string $encrypt

The cipher name.

Throws

\RuntimeException

When an invalid cipher is provided.

_decrypt()

_decrypt(array  $values, string|boolean  $mode, string|null  $key = null) : string|array

Decrypts $value using public $type method in Security class

Parameters

array $values

Values to decrypt

string|boolean $mode

Encryption mode

string|null $key

Used as the security salt if specified.

Returns

string|array —

Decrypted values

_decode()

_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 —

Decoded values.

_implode()

_implode(array  $array) : string

Implode method to keep keys are multidimensional arrays

Parameters

array $array

Map of key and values

Returns

string —

A json encoded string.

_explode()

_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 —

Map of key and values

encodeCookies()

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

Updated response with encoded cookies.

encodeSetCookieHeader()

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

Updated response with encoded cookies.