2017-12-13 9 views
4

Laravel은 요청 및 응답 쿠키를 다르게 해시합니까?Laravel 쿠키 암호화

기본 도메인과 하위 도메인을 사용하고 있으며 CORS와 CSRF를 설정했으며 EncryptCookies 클래스에서 쿠키를 제외하면 응답 헤더와 요청 헤더에 동일한 쿠키가 표시됩니다.

그러나 내가 암호화하도록 남겨두면 다른 "암호화 문자열"을 얻고 있으며 허용 가능한 동작인지 여부를 모릅니다.

EncryptCookies 클래스는 Laravel Encryption 들어 Kernel.php

+0

이 때문에 암호화 = 해싱 될 수 있습니다. –

+0

대신에 "암호화 문자열"이라고 부릅니다. – Norgul

+0

의미 : 암호화는 매번 동일한 "암호화 된 문자열"을 제공 할 필요가 없습니다. 예 : http://www-cs-students.stanford.edu/~tjw/jsbn/rsa2.html –

답변

1

web 부분에 나열되어

Laravel의 암호기은 AES-256 및 AES-128 암호화 제공 OpenSSL을 사용. Laravel에 내장 된 암호화 기능을 사용하고 자신의 "가정에서 재배 된" 암호화 알고리즘을 사용하지 않는 것이 좋습니다. Laravel의 암호화 된 값은 모두 메시지 인증 코드 (MAC)를 사용하여 값을 암호화 한 후에는 수정할 수 없도록 에 서명되어 있습니다. 같은 값, 페이로드를 암호화 할 경우에도

각 암호화

, 값이 다른 initialization vectorAES-256/AES-128 암호화하고 다른 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"} 
+0

암호화 된 값이 다른 경우 동일한 토큰인지 어떻게 알 수 있습니까? – Norgul

+0

Crypt :: decrypt()는 암호를 해독하고 반환 된 값은 동일합니다. 'Crypt :: decrypt (Crypt :: encrypt ('foo')) == Crypt :: decrypt (Crypt :: encrypt ('foo'))' – Tschallacka

+0

관련 링크 : https://stackoverflow.com/questions/9049789/ aes-encryption-key-iv – Ben