在代码点火器中,
无论何时对用户进行身份验证,我都希望创建一个随机会话。此机制将用于加密/解密视图控制器之间的数据。例如,我希望打开以下表单:
<?php echo form_open('targetcontrollerfunction/'.encryptionfunction(data_to_be_secured)); ?>
因此,如果有人去检查元素,他们就无法理解传递给控制器的数据。
我尝试过的:
我已经阅读了Codeigniter文档以及关于stackoverflow和谷歌的几篇文章。他们建议使用encryption
库生成随机密钥,使用encrypt
库使用该密钥对数据进行编码/解码。但挑战在于,他们希望我将新生成的密钥存储在$config["encryption_key"]
中
问题开始了。在我的控制器功能中,我正在验证用户帐户并设置一些会话变量。同时,我希望生成随机密钥,这样密钥对每个用户来说都是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,请转到文件夹/application/config,编辑config.php,然后输入加密密钥(32个字符(
搜索以下行:$config['encryption_key']='yourkeyhere';