【发布时间】:2020-05-04 17:41:41
【问题描述】:
在codeigniter中,
每当用户通过身份验证时,我都想创建一个随机会话。该机制将用于加密/解密视图控制器之间的数据。例如,我希望打开如下表单:
<?php echo form_open('targetcontrollerfunction/'.encryptionfunction(data_to_be_secured)); ?>
因此,如果有人去检查元素,他们无法理解传递给控制器的数据。
我尝试过的:
我也浏览过 Codeigniter 文档和几篇关于 stackoverflow 和 google 的文章。他们建议使用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 文件中,无法在控制器内部设置加密密钥,我完全糊涂了。还有什么方法可以生成随机密钥并为每个登录的会话使用相同的密钥?
【问题讨论】:
-
为什么不使用 php 加密/解密特定函数来生成密钥?所以你不会被 CI 限制所束缚
-
这个问题很老了,但万一它对 OP 或未来的访问者有帮助 - 一个问题是你混合了 the old, deprecated Encrypt library 和 the newer Encryption library which replaced it。
标签: codeigniter encryption codeigniter-3