2014-04-09 49 views
0

對於我所有的項目,我使用codeigniter作爲我的框架。我總是使用會話來獲取諸如user_string和user_permissions之類的商店內容,以確定誰可以訪問網站中的某些功能和頁面。使用Codeigniter安全地存儲會話數據?

使用session->userdata作爲提供用戶唯一內容的基礎是不好的做法嗎?

我通常設置用戶用戶數據的陣列,當他們登錄,就像這樣:

$data = array('id' => $user_string, 
       'g' => $user_group); 

$this->session->set_userdata($data); 

當我確定什麼樣的結果,他們得到了一個查詢我不妨做到以下幾點:

function get_posts(){ 
    if($this->session->userdata('g') == 2){ 
     $data = $this->db->get_where('posts', array('' => $this->session->userdata('id')))->result_array(); 
     return $data; 
    } 
} 

由於session->userdata('id')session->userdata('g')

非常感謝您的任何意見。

+1

你可以使用這個,無後顧之憂!對於額外的安全性,在你的配置文件中將sess_encrypt_cookie **設置爲true – xiidea

+0

不確定你是否在討論[會話修復](http://en.wikipedia.org/wiki/Session_fixation),Code Igniter的實現或整體會議概念: - ? –

+0

@ÁlvaroG.Vicario它只是爲了確定我在做什麼是正確的和良好的做法?只是所以我沒有在我的代碼中引入壞習慣。 – learn

回答

0

只是做一個思考: -
你的鑰匙保存到您的application/config/config.php文件,打開文件,並設置

$config['encryption_key'] = "YOUR KEY"; 

$this->load->library('encrypt'); 

data = array('id' => $this->encrypt->encode($user_string), 
       'g' => $this->encrypt->encode($user_group), 

);

$this->session->set_userdata($data); 

時,你得到的數據: -

function get_posts(){ 
    if($this->session->userdata('g') == 2){ 
      $id =$this->encrypt->decode($this->session->userdata('id')); 
     $data = $this->db->get_where('posts', array('' => $id))->result_array(); 
     return $data; 
    } 
} 
+0

除非我錯過了一些東西,否則這可以防止惡意黑客入侵您的服務器並獲得對會話目錄的寫入權限,但不知何故仍然無法讀取其他內容。這是不太可能的情況,不是嗎?就好像一個陌生人在你家裏破門一樣,就像在黑暗中脫衣服一樣。 –