Laravel cookie加密

Nor*_*gul 6 php encryption cookies laravel

Laravel是否有不同的请求和响应cookie?

我正在使用主域和子域,并设置了CORS和CSRF,如果我从EncryptCookies类中排除cookie,我会在响应头和请求头中看到相同的cookie.

但是,如果我让它们加密,我会得到不同的"加密字符串",并且不知道这是否是可接受的行为?

EncryptCookiesclass仅列在web部分中Kernel.php

Ben*_*Ben 5

对于Laravel 加密

Laravel 的加密器使用 OpenSSL 提供 AES-256 和 AES-128 加密。强烈建议您使用 Laravel 的内置加密设施,而不是尝试推出您自己的“自制”加密算法。Laravel 的所有加密值均使用消息身份验证代码 (MAC) 进行签名,因此一旦加密,其底层值就无法修改。

对于每次加密,该值都使用不同初始化向量的AES-256 / AES-128进行加密,并使用不同的 MAC 进行签名,即使加密相同的值,有效负载、返回值也始终不同。为了更容易理解,你可以查看这个例子:encrypt

$value = Crypt::encrypt('foo');
// eyJpdiI6ImVoNEVlVWpnYUdwZ1JHRlJWSGlTZEE9PSIsInZhbHVlIjoiVThpWjJNWVBqZnVsWjhLVWNDXC85VHc9PSIsIm1hYyI6IjFjMDRhOTM5ZThhOWRmYjk3Mzk0OWFmNTM3YWE1NDAzNzMxNWY5YTJmODMwNmQxZDE4NDllZGJkMjc1Y2I3ZmYifQ==
base64_decode($value);
// {"iv":"eh4EeUjgaGpgRGFRVHiSdA==","value":"U8iZ2MYPjfulZ8KUcC\/9Tw==","mac":"1c04a939e8a9dfb973949af537aa54037315f9a2f8306d1d1849edbd275cb7ff"}
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

$value = Crypt::encrypt('foo');
// eyJpdiI6Ill5MmZleG5ycTBaZmQ5NnRDT3N3dVE9PSIsInZhbHVlIjoiTmgrRnlqajJjUk9qTk1qeHJLU21LUT09IiwibWFjIjoiNWEzZDRjZWMwMjg0ZDhlMjhlZWRiODg3ZWQ5MTcxN2I5N2JjY2ZmMzc0NTYyOTI5MThmOTk4YjAyZjM1YTRjMyJ9
base64_decode($value);
// {"iv":"Yy2fexnrq0Zfd96tCOswuQ==","value":"Nh+Fyjj2cROjNMjxrKSmKQ==","mac":"5a3d4cec0284d8e28eedb887ed91717b97bccff37456292918f998b02f35a4c3"}
Run Code Online (Sandbox Code Playgroud)

  • Crypt::decrypt() 将对其进行解密,并且返回给您的值将是相同的。`地穴::解密(地穴::加密('foo')) == 地穴::解密(地穴::加密('foo'))` (2认同)