如何使用提取安全地创建PHP变量 - php

在我以前的文章中,我问如何从数组(PHP Variables made with foreach)创建变量,我得到了几个答案,并且我正在测试extract(),但是出于安全原因,我看到了一些反对它的方法。

现在我的问题在这里是我该如何安全地从$ _POST中使用提取,该$ _POST具有使用序列化jquery制成的数组。

所谓安全,是指如果用户输入了错误的数据,那么安全的方法就可以毫无问题地解决这一问题。

PHP网站在extract命令中有一个小警告,内容如下:

不要在不受信任的地方使用extract()
数据,例如用户输入(即$ _GET,
$ _FILES等)。例如,如果这样做
如果您想运行旧代码
依靠register_globals
暂时,请确保使用以下一种
非覆盖的extract_type
值,例如EXTR_SKIP并注意
你应该提取相同的
在中定义的顺序
php.ini中的variables_order。

它警告使用,但至少没有提供一个示例,说明如何以安全方式解决提取物的用户。

参考方案

最好的选择是根本不使用extract()。从PHP相当于编写安全代码的湿厕纸时代起,这是一个糟糕的设计决策。

这可能很痛苦,但是写出以下较长的序列要好得多:

$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
etc...

或者只是在代码中的任何地方使用$_POST['var1']和company。

一旦您开始使用提取,您就可以为恶意用户提供一种潜在的方式来编写代码,无论您投入了多少时间/精力。您不必在银行金库门上钻一个洞,因为每次打开门都要花一些钱,这太烦人了。一旦出现漏洞,就会被利用。

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友

PHP-我们应在会话中包含哪些数据? - php

这是一个初学者的问题...在网站中,会话中应该包含或不应该包含什么类型的数据?我了解我不应该包含任何需要保持安全的信息。我对编程最佳实践更感兴趣。例如,有可能在会话中包括一些数据,否则这些数据将作为依赖项注入从一个页面发送到另一个页面。这不等于创建全局变量吗?一般来说,哪种数据在会话表中已经存在或没有?谢谢,JDelage 参考方案 您应该将会话视为一次写入…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…