Laravel是否对请求和响应的Cookie进行不同的哈希处理?
我正在使用主域名和子域名,并已设置CORS和CSRF。如果我在EncryptCookies
类中排除Cookie,则会在响应标头和请求标头中看到相同的Cookie。
然而,如果我将它们加密,我得到的"加密字符串"是不同的,我不知道这是否是可接受的行为?
EncryptCookies
类仅列在Kernel.php
的web
部分中。
Laravel是否对请求和响应的Cookie进行不同的哈希处理?
我正在使用主域名和子域名,并已设置CORS和CSRF。如果我在EncryptCookies
类中排除Cookie,则会在响应标头和请求标头中看到相同的Cookie。
然而,如果我将它们加密,我得到的"加密字符串"是不同的,我不知道这是否是可接受的行为?
EncryptCookies
类仅列在Kernel.php
的web
部分中。
对于Laravel加密:
Laravel的加密器使用OpenSSL提供AES-256和AES-128加密。强烈建议您使用Laravel内置的加密工具,而不是尝试自己编写“自制”的加密算法。 Laravel的所有加密值都使用消息认证码(MAC)进行签名,以便在加密后无法修改其底层值。
对于每个加密,该值都使用AES-256 / AES-128进行加密,使用不同的初始化向量进行签名,即使您加密相同的值,encrypt
返回的有效载荷也总是不同的。为了更好地理解,您可以查看此示例:
$value = Crypt::encrypt('foo');
// eyJpdiI6ImVoNEVlVWpnYUdwZ1JHRlJWSGlTZEE9PSIsInZhbHVlIjoiVThpWjJNWVBqZnVsWjhLVWNDXC85VHc9PSIsIm1hYyI6IjFjMDRhOTM5ZThhOWRmYjk3Mzk0OWFmNTM3YWE1NDAzNzMxNWY5YTJmODMwNmQxZDE4NDllZGJkMjc1Y2I3ZmYifQ==
base64_decode($value);
// {"iv":"eh4EeUjgaGpgRGFRVHiSdA==","value":"U8iZ2MYPjfulZ8KUcC\/9Tw==","mac":"1c04a939e8a9dfb973949af537aa54037315f9a2f8306d1d1849edbd275cb7ff"}
$value = Crypt::encrypt('foo');
// eyJpdiI6Ill5MmZleG5ycTBaZmQ5NnRDT3N3dVE9PSIsInZhbHVlIjoiTmgrRnlqajJjUk9qTk1qeHJLU21LUT09IiwibWFjIjoiNWEzZDRjZWMwMjg0ZDhlMjhlZWRiODg3ZWQ5MTcxN2I5N2JjY2ZmMzc0NTYyOTI5MThmOTk4YjAyZjM1YTRjMyJ9
base64_decode($value);
// {"iv":"Yy2fexnrq0Zfd96tCOswuQ==","value":"Nh+Fyjj2cROjNMjxrKSmKQ==","mac":"5a3d4cec0284d8e28eedb887ed91717b97bccff37456292918f998b02f35a4c3"}
Crypt::decrypt(Crypt::encrypt('foo')) == Crypt::decrypt(Crypt::encrypt('foo'))
- Tschallacka