2014-06-09 31 views
7

UPDATE:即使下載後的「固定」 2.2.0,更新日誌文件仍然以填補:笨2.2.0 HMAC不匹配錯誤

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

升級從笨2.1.3 2.2.0後我得到的錯誤:

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

的mcrypt擴展啓用。如果我設置$ config ['sess_encrypt_cookie'] = FALSE; (不是生產選項)沒有錯誤。任何幫助不勝感激。

+0

我有完全相同的錯誤。唯一的區別是我從2.1.4升級到2.2.0 – Josh

回答

3

CI_Input - > _ sanitize_globals()函數有時破壞加密的會話 來解決這個問題,我改變/system/core/Input.php(2.2版本,線636)

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

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

謝謝您確認這是一個框架問題。 https://github.com/EllisLab/CodeIgniter/issues/3094#issuecomment-51899465 – suncoastkid

1
系統/庫/ Sessions.php功能_set_cookie功能變化

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); 
} 

到:

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

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

,看看它是否工作。

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

3

重新下載CI 2.2存檔,它被重新加標籤和更換。

+0

不,你沒有。 :) – Narf

+0

不要從官方網站下載,從github發佈下載 – Josh

+0

...我是一個給你的github鏈接。你只是不知道如何清除瀏覽器的下載緩存。 – Narf

0

超出上述校正,我需要改變下面的行:

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

收件人:

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

希望它有幫助, 關心。

+0

請更新您的答案,解釋您的代碼工作原因。 –

+0

提供的補丁不尊重cookie前綴。 –