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

标签 php extract

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

现在我的问题是如何以安全的方式从 $_POST 中使用提取,该 $_POST 具有使用 jquery 序列化的数组。

安全的意思是,如果用户输入错误的数据,安全的方式可以毫无问题地解决这个问题。

PHP 站点在提取命令中有一个小警告,内容如下:

Do not use extract() on untrusted data, like user input (i.e. $_GET, $_FILES, etc.). If you do, for example if you want to run old code that relies on register_globals temporarily, make sure you use one of the non-overwriting extract_type values such as EXTR_SKIP and be aware that you should extract in the same order that's defined in variables_order within the php.ini.

它会警告使用情况,但至少没有提供如何以安全的方式解决提取用户问题的示例。

最佳答案

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

这可能很痛苦,但写出一长串要好得多:

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

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

一旦您开始使用提取,您就为恶意用户提供了进入您的代码的潜在途径,无论您投入了多少时间/精力。你不会在银行金库门上钻一个洞,因为每次都必须打开门放一些钱太烦人了。一旦出现漏洞,就会被利用。

关于php - 如何使用 extract 安全地创建 PHP 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6023750/

相关文章:

php - 如何找到 WooCommerce 样式表的 Hook 名称

c++ - 从 stringstream 中提取到 2D vector 中

c++ - 从c++中的一行字符串中提取数字

php - 如何使用 MySQL 和 PHP 在数据库中存储用户之间的相关值?

PHP Mailer 类问题 :Message body empty

php - 从 WordPress 获取最后 5 个帖子标题及其缩略图

c++ - 使用 LibTar 提取文件

php - 使用 MySql 中的变量计算用户对数字标量的评分

sql - 有没有一个工具可以从Delphi表单文件中提取所有SQL命令字符串?

java - 如何解压缩 zip 文件的特定目录中的所有文件?