在codeigniter。
每当一个用户被认证时,我想创建一个随机会话,这个机制将用于加密和解密视图控制器之间的数据。这个机制将被用来加密view-controllers之间的数据。例如,我想打开一个如下的表单。
<?php echo form_open('targetcontrollerfunction/'.encryptionfunction(data_to_be_secured)); ?>
因此,如果有人去检查元素, 他们是无法理解的数据 被传递给控制器。
我已经尝试了什么。
我查阅了Codeigniter的文档 以及stackoverflow和google上的一些文章。他们建议使用 encryption
库来生成一个随机密钥和 encrypt
库来使用该密钥对数据进行编码。但挑战在于,他们希望我将新生成的密钥存储在 $config["encryption_key"]
问题从这里开始。在我的Controller函数中,我正在验证用户账户并设置一些会话变量。同时,我希望生成随机密钥,使密钥对每个用户来说都是100%唯一的,但当我在控制器函数中使用以下代码时。
$randomkey=bin2hex($this->encryption->create_key(16));
$config["encryption_key"]=$randomkey;
$this->session->set_userdata('somekey', $this->encrypt->encode("somevalue"));
我也把它改成了:
$randomkey=bin2hex($this->encryption->create_key(16));
$config=array(
'encryption_key'=>$randomkey
);
$this->encryption->initialize($config);
$this->session->set_userdata('somekey', $this->encrypt->encode("somevalue"));
我得到一个错误。
为了使用加密类,需要你在配置文件中设置一个加密密钥。
库不能被加载到config.php文件中,encryption_key不能在控制器中设置,我完全搞不懂了。还有什么办法可以随机生成一个密钥,并且每次登录的会话都使用同一个密钥?
如果你使用的是CI 3,进入文件夹applicationconfig,编辑config.php,然后输入加密密钥(32个字符)
搜索下面一行:$config['encryption_key'] = 'yourkeyhere'。