即使cookie被加密,CodeIgniter数据库会话是否更安全?

Jor*_*eno 1 php cookies session codeigniter

问题1

基本上,我要问的是:$config['sess_use_database'] = TRUE;即使是更安全$config['sess_encrypt_cookie'] = TRUE;吗?

我一直在博客,Stackoverflow帖子,甚至是声称$config['sess_use_database'] = TRUE;更安全的CI Docs上磕磕绊绊,但似乎user_data存储(在cookie或数据库中)位置从安全角度来看如果cookie无论如何都是加密的并不重要.

问题2

如果您设置$config['sess_encrypt_cookie'] = FALSE;并检查cookie,无论其值是多少,都会$config['sess_use_database']在cookie的末尾粘贴一个(似乎是md5)哈希 - 这是一个例子:

a:4{
  s:10:"session_id";
  s:32:"a2caac03fc72d709ac280540a09d8ed7";
  s:10:"ip_address";
  s:9:"127.0.0.1";
  s:10:"user_agent";
  s:100:"Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.14 Safari/537.4";
  s:13:"last_activity";
  i:1347228760;
}7aa8ebe3fc462bd86c0c0544a969cbda
Run Code Online (Sandbox Code Playgroud)

有什么意义7aa8ebe3fc462bd86c0c0544a969cbda?它从哪里来的?

Rep*_*pox 6

问题1
这取决于您认为安全的内容.

您设置的自定义数据将存储在数据库中,但session_id,ip_address,user_agent和last_activity仍将存储在cookie中.如果您认为这些数据妥协,那么答案是肯定的.否则答案是否定的.

问题2
这是包含会话数据和加密密钥的序列化数据的哈希值.这用于确保cookie数据未被篡改.

  • 并且数据库会话不受像cookie那样的4kb限制的约束 - 这有时会导致意外问题 (5认同)
  • +1而不是回答提供额外的输入,我只是想补充说人们认为数据库方法更安全,因为你可以绝对验证会话的有效性,而使用cookie,即使是加密的,也有可能(但是轻微的)被锻造. (2认同)