Laravel是否会以不同的方式请求和响应Cookie?
我正在使用主域名和子域名,并设置了CORS和CSRF,如果我从EncryptCookies
类中排除了Cookie,我会在响应标头和请求标头中看到相同的Cookie。
但是,如果我让它们加密,我会得到不同的加密字符串",并且不知道这是否是可接受的行为?
EncryptCookies
课程仅列在web
Kernel.php
部分下方
答案 0 :(得分:2)
Laravel的加密器使用OpenSSL提供AES-256和AES-128 加密。强烈建议您使用Laravel的内置功能 加密设施,而不是试图推出自己的“本土” 加密算法。 Laravel的所有加密值都已签名 使用消息验证码(MAC)使其底层 加密后无法修改值。
对于每次加密,该值都使用AES-256 / AES-128进行加密,使用不同的initialization vector并使用不同的MAC进行签名,即使您加密相同的值,有效负载,返回值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"}