【发布时间】:2011-08-26 19:05:33
【问题描述】:
在我之前的帖子中,我询问了如何从数组中创建变量 (PHP Variables made with foreach),我得到了几个答案,我正在测试 extract(),但出于安全原因,我看到了几个反对它。
现在我的问题是如何以安全的方式从 $_POST 中使用提取,该 $_POST 具有使用 jquery 序列化的数组。
安全的意思是如果用户输入了错误的数据,安全的方式可以毫无问题地解决这个问题。
PHP 站点在提取命令中有一个小警告,内容如下:
不要在不受信任的情况下使用 extract() 数据,例如用户输入(即 $_GET, $_FILES 等)。如果你这样做,例如 如果你想运行旧代码 依赖于 register_globals 暂时,请确保您使用其中之一 非覆盖 extract_type EXTR_SKIP 等值并注意 你应该提取相同的 中定义的顺序 php.ini 中的 variables_order。
它警告使用,但至少没有提供如何以安全方式解决提取用户问题的示例。
【问题讨论】:
-
简单地使用 $_POST['key'] 或 $_GET['key'] 有什么问题?
-
除了近 200 个变量外,什么都没有。但由于 Marc B 的回答,我认为我将不得不输入每一个。
-
只是为了跟进 Marc B 的评论。大量变量是使用完整变量名的一个很好的理由。您可以立即在代码中的任何位置看到它的来源,并知道将其作为不安全的数据进行处理。