我正在哈希密码,在读取会话数据时匹配用户代理,以及安全登录用户所需的一切。我对安全检索/读取会话数据的方式感兴趣。例如,我正在使用一个从会话数据数组中获取用户ID的函数......
在db表中:
a:6:{s:9:"user_data";s:0:"";s:7:"user_id";s:1:"3";s:9:"firstname";s:4:"Tina";s:8:"lastname";s:3:"Fey";s:8:"username";s:8:"lizlemon";s:6:"status";s:1:"1";}
功能(Codeigniter):
function get_user_id()
{
if (is_numeric($this->ci->session->userdata('user_id')))
{
return $this->ci->session->userdata('user_id');
}
else
{
exit();
}
}
我只是检查id是否为数字。我们是否应该担心检索会话数据,即使它已安全地添加到数据库中?
答案 0 :(得分:4)
你应该从不编写自己的会话处理程序。使用sesion_start()
和$_SESSION[]
超级全局。这也打开了使用PHP security session features的大门,例如cooke_secure,http_only cookie和use_only_cookies。
session_start()生成一个非常安全的会话ID,它是一个加密的nonce。您可以将PHP配置为从/dev/urandom
中提取此值,这是一个非常安全的熵池,可能是生成会话ID的最佳方法。