2014-06-09 23 views
7

UPDATE: Auch nach dem Herunterladen von "festen" 2.2.0 Update-Protokolldateien füllen immer noch mit:CodeIgniter 2.2.0 HMAC Mismatch Fehler

Session: HMAC mismatch. The session cookie data did not match what was expected.

Nach dem CodeIgniter 2.1.3 auf 2.2.0 Upgrade Ich erhalte den Fehler:

Session: HMAC mismatch. The session cookie data did not match what was expected.

Die Mcrypt-Erweiterung ist aktiviert. Wenn ich $ config ['sess_encrypt_cookie'] = FALSE einstelle; (keine Option für die Produktion) gibt es keinen Fehler. Jede Hilfe sehr geschätzt.

+0

Ich habe genau den gleichen Fehler. Der einzige Unterschied ist, dass ich von 2.1.4 auf 2.2.0 aktualisiert habe. – Josh

Antwort

3

CI_Input -> _ sanitize_globals() Funktion manchmal verschlüsselte Sitzung brechen dieses Problem zu beheben, änderte ich /system/core/Input.php (Version 2.2, Linie 636)

$_COOKIE[$this->_clean_input_keys($key)] = $this->_clean_input_data($val); 

zu

if(!(config_item('sess_encrypt_cookie') === TRUE) || $key!=config_item('sess_cookie_name')) 
    $_COOKIE[$this->_clean_input_keys($key)] = $this->_clean_input_data($val); 
+0

Vielen Dank für die Bestätigung, dass dies ein Framework-Problem war. https://github.com/EllisLab/CodeIgniter/issues/3094#issuecomment-51899465 – suncoastkid

1

in System/Bibliotheken/sessions.php Funktion _set_cookie Funktionsänderung:

if ($this->sess_encrypt_cookie == TRUE) 
{ 
    $cookie_data = $this->CI->encrypt->encode($cookie_data); 
} 
else 
{ 
    // if encryption is not used, we provide an md5 hash to prevent userside tampering 
    $cookie_data .= hash_hmac('sha1', $cookie_data, $this->encryption_key); 
} 

zu:

if ($this->sess_encrypt_cookie == TRUE) 
{ 
    $cookie_data = $this->CI->encrypt->encode($cookie_data); 
} 

$cookie_data .= hash_hmac('sha1', $cookie_data, $this->encryption_key); 

um zu sehen, ob es funktioniert.

siehe: https://github.com/EllisLab/CodeIgniter/issues/3086

3

Re-Download der CI 2.2 Archiv, es wurde neu markiert und ersetzt.

+0

Nein, das hast du nicht. :) – Narf

+0

laden Sie es nicht von der offiziellen Website, laden Sie es von Github Release – Josh

+0

... Ich war derjenige, Ihnen den GitHub-Link zu geben. Sie wissen einfach nicht, wie Sie den Download-Cache Ihres Browsers löschen. – Narf

0

Jenseits der oben genannten Korrektur, musste ich die folgende Zeile ändern:

if ($key === $sess_cookie_name && config_item('sess_encrypt_cookie')) 

An:

if ($key === config_item('cookie_prefix') . $sess_cookie_name 
    && config_item('sess_encrypt_cookie')) 

Hoffe, dass es hilft, Grüße.

+0

Bitte aktualisieren Sie Ihre Antwort erklären, warum Ihr Code funktioniert. –

+0

Der bereitgestellte Patch berücksichtigt das Cookie-Präfix nicht. –