Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter如何验证会话数据?_Php_Codeigniter_Session_Cookies_Codeigniter 2 - Fatal编程技术网

Php CodeIgniter如何验证会话数据?

Php CodeIgniter如何验证会话数据?,php,codeigniter,session,cookies,codeigniter-2,Php,Codeigniter,Session,Cookies,Codeigniter 2,有一个类似的问题已经被问了,但没有一个提供正确的答案,所以我将更深入地确保我们理解。PHP会话存储一个服务器端会话ID,该ID将与保存在客户端cookie中的会话ID进行比较,但CodeIgniter似乎不存储会话ID服务器端,如果是,它如何知道从客户端抓取的cookie有效且未被篡改 我在会话库中查看了CodeIgniter的函数,它似乎没有将会话ID存储在任何地方,难道我不能创建自己的cookie来类似CodeIgniter并检查页面的安全性吗? 所有答案都祝大家好。您可以将会话存储在数据库

有一个类似的问题已经被问了,但没有一个提供正确的答案,所以我将更深入地确保我们理解。PHP会话存储一个服务器端会话ID,该ID将与保存在客户端cookie中的会话ID进行比较,但CodeIgniter似乎不存储会话ID服务器端,如果是,它如何知道从客户端抓取的cookie有效且未被篡改

我在会话库中查看了CodeIgniter的函数,它似乎没有将会话ID存储在任何地方,难道我不能创建自己的cookie来类似CodeIgniter并检查页面的安全性吗?
所有答案都祝大家好。

您可以将会话存储在数据库中。如果要执行此操作,请执行以下操作:

在数据库中创建会话表: 更新Config.php文件 默认情况下,该表名为ci_sessions,但只要更新application/config/config.php文件,使其包含您选择的名称,就可以随意命名它。创建数据库表后,可以在config.php文件中启用数据库选项,如下所示:

$config['sess_use_database'] = TRUE;
一旦启用,会话类将在数据库中存储会话数据。 确保在配置文件中也指定了表名:

$config['sess_table_name'] = 'ci_sessions';

参考:

您可以将会话存储在数据库中。如果要执行此操作,请执行以下操作:

在数据库中创建会话表: 更新Config.php文件 默认情况下,该表名为ci_sessions,但只要更新application/config/config.php文件,使其包含您选择的名称,就可以随意命名它。创建数据库表后,可以在config.php文件中启用数据库选项,如下所示:

$config['sess_use_database'] = TRUE;
一旦启用,会话类将在数据库中存储会话数据。 确保在配置文件中也指定了表名:

$config['sess_table_name'] = 'ci_sessions';
参考资料:

非常好的问题

CodeIgniter将会话数据的值存储在cookie中,包括
会话id
ip\u地址
用户代理
上次活动

它如何知道从客户端抓取的cookie是有效的,并且 没有被篡改

为了验证会话并提高安全性,CodeIgniter提供了一个允许您检查客户端
用户代理
和/或
IP地址

$config['sess\u encrypt\u cookie']=FALSE;
$config['sess\u match\u ip']=FALSE;
$config['sess\u match\u useragent']=TRUE;
  • sess\u encrypt\u cookie
    允许您在序列化会话存储在cookie中之前对其进行加密
  • sess\u match\u ip
    在读取会话数据时匹配客户机的ip
  • sess\u match\u useragent
    在读取会话数据时匹配用户代理
难道我不能创建自己的cookie,让它像CodeIgniter的,然后就可以了吗 通过页面的安全性

首先,如果启用
sess\u encrypt\u cookie
config(在config.php文件中设置了),CodeIgniter将使用您自己的加密密钥加密序列化会话数据,并将加密数据存储在cookie中

因此,客户端无法更改变量

对于其他两个配置,通过启用它们,CodeIgniter尝试通过与会话数据进行比较来验证客户端的用户代理和/或IP地址。如果它们不匹配,

将会话存储到数据库中 通过使用此功能,CodeIgniter将上述所有会话数据包括
用户数据
存储到数据库中。而且它不再在cookie中存储
用户\u数据

这将修复cookie存储限制问题(您可以在cookie中最多存储4KB),并保护
用户数据
信息不被篡改。

这是一个很好的问题

CodeIgniter将会话数据的值存储在cookie中,包括
会话id
ip\u地址
用户代理
上次活动

它如何知道从客户端抓取的cookie是有效的,并且 没有被篡改

为了验证会话并提高安全性,CodeIgniter提供了一个允许您检查客户端
用户代理
和/或
IP地址

$config['sess\u encrypt\u cookie']=FALSE;
$config['sess\u match\u ip']=FALSE;
$config['sess\u match\u useragent']=TRUE;
  • sess\u encrypt\u cookie
    允许您在序列化会话存储在cookie中之前对其进行加密
  • sess\u match\u ip
    在读取会话数据时匹配客户机的ip
  • sess\u match\u useragent
    在读取会话数据时匹配用户代理
难道我不能创建自己的cookie,让它像CodeIgniter的,然后就可以了吗 通过页面的安全性

首先,如果启用
sess\u encrypt\u cookie
config(在config.php文件中设置了),CodeIgniter将使用您自己的加密密钥加密序列化会话数据,并将加密数据存储在cookie中

因此,客户端无法更改变量

对于其他两个配置,通过启用它们,CodeIgniter尝试通过与会话数据进行比较来验证客户端的用户代理和/或IP地址。如果它们不匹配,

将会话存储到数据库中 通过使用此功能,CodeIgniter将上述所有会话数据包括
用户数据
存储到数据库中。而且它不再在cookie中存储
用户\u数据
<