【问题标题】:Is there any way to pass a php variable which will be 'hidden' even if user check source code of my page?即使用户检查我的页面的源代码,是否有任何方法可以传递将“隐藏”的 php 变量?
【发布时间】:2018-11-11 15:18:34
【问题描述】:

当我使用类似的代码时,

<input type="hidden" name="foo" value="<?php echo $var;?>" />

$var 显示在我网页的源代码中。有什么方法可以通过使用 PHP/Codeigniter 隐藏我的用户在我的源代码中看到的那个变量?我正在为我的项目使用 codeigniter。

简而言之,我想做的是在提交表单时将数据发送到控制器。但不是通过 url 或隐藏的 html 输入字段

【问题讨论】:

  • 我猜你必须使用会话来传递值。
  • 你可以加密一个隐藏的值。
  • 看起来 CI 有一个加密库。 codeigniter.com/user_guide/libraries/encryption.html
  • 人们看到值/变量是否重要?
  • 谢谢你们的回复。会话和加密都可以完成这项工作。我觉得会话更适合我的项目。不管怎样,谢谢大家

标签: php html forms codeigniter codeigniter-3


【解决方案1】:

您可以使用 codeigniter 的会话库来存储在源代码中不可见的数据。

  • 需要加载会话库($this-&gt;load-&gt;library('session'); 或在application/config/autoload.php 中自动加载)
  • 在您的控制器中设置您要存储的数据 ($this-&gt;session-&gt;set_userdata(['your_secret_data_key' =&gt; 'your_secret_data_value']);)
  • 您可以检索您的数据 ($this-&gt;session-&gt;userdata('your_secret_data_key');)

因此,在您生成表单之前添加数据,然后在将处理您的表单的控制器中,您可以检索以前存储的数据。

有关会话库的更多信息:Codeigniter's session library documentation

【讨论】:

  • 感谢您提供详细信息。我觉得这个解决方案会更实用,因为我必须处理我的代码中已经存在的会话。此外,加密和解密也不会像其他人一样轻松解密。无论如何,非常感谢您的宝贵时间
【解决方案2】:

您可以在将此值发送到视图之前使用加密库对其进行加密,并在检索到它时再次对其进行解密。

加载库:$this-&gt;load-&gt;library('encryption');

您可以在文档中找到有关其配置的更多详细信息。 encryption

$var = 'value';
$var = $this->encryption->encrypt($var);
$this->load->view('view', array('var' => $var));

现在你有一个加密的$var,做任何你必须做的事情,检索后你可以使用它:

$var = $this->encryption->decrypt($var);
echo $var;    // value

【讨论】:

  • 感谢您的回复。但我觉得设置会话并在使用后销毁会更有帮助,因为任何人都可以解密我的加密数据。
  • @Rishad,如果有人可以解密它,那将是毫无意义的加密。您将是唯一拥有钥匙的人。
  • @Rishad,问题错误在于在用户提交的表单中包含一些有效负载。 “我想做的是在提交表单时将数据发送到控制器”。 会话可能是您的替代解决方法。但是会话可能会有些悬空,这样您就可以与服务器端瞬态数据紧密耦合。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多