CodeIgniter会话帮助,cookie不安全?

Nic*_*ick 7 security cookies session codeigniter

我只是开始学习会话,为了我的目的,我想创建一些东西,在客户端的每个请求,服务器验证该用户,然后只为该用户执行数据处理.

但是,我在CodeIgniter中看到了很多例子,其中会话的设置如下:

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

$newdata = array(
               'username'  => 'johndoe',
               'email'     => 'johndoe@some-site.com',
               'logged_in' => TRUE
           );

$this->session->set_userdata($newdata);
Run Code Online (Sandbox Code Playgroud)

但是,有人不能只是在他们的计算机上使用通用用户名创建一个cookie,并将'logged_in'状态设置为true,突然你在没有密码的情况下进行身份验证?这对我来说似乎是一个安全漏洞,但我看到这么多的例子.

在每个请求上对用户进行身份验证的正确方法是什么?

Bel*_*lla 10

在您的codigniter安装的application/config/config.php文件中,您可以选择加密您的cookie.

$config['sess_cookie_name']  = 'ci_session';
$config['sess_expiration']  = 7200;
$config['sess_encrypt_cookie'] = TRUE;  // set from false to TRUE
Run Code Online (Sandbox Code Playgroud)

设置完成后,set_userdata()和userdata()方法将透明地处理加密和解密会话数据.

完整的codigniter会话配置选项列表位于此页面的底部:

http://codeigniter.com/user_guide/libraries/sessions.html

  • 如果是一个问题,为什么不使用数据库来存储会话?这样,除了加密cookie之外,您还可以验证会话ID.如果您关注安全性,那么您确实应该*使用数据库.请参阅CI用户指南中的*将会话数据保存到数据库*部分:http://demos.softaculous.com/CodeIgniter/user_guide/libraries/sessions.html (2认同)