直接访问php superglobal时的安全问题


Security concern when accessing php superglobal directly

我刚刚将我的IDE(Netbean)升级到1.7.4测试版,以测试它。。。现在,每当我访问超全局变量时,它似乎都会给我一个警告。上面写着

不直接访问supergolobal$_POST阵列

我目前正在使用这个

 $taxAmount = intval(ceil($_POST['price']*($TAX-1)));

这到底有多大的安全隐患?

这是正确的方法吗?它有什么不同吗?

 $price = $_POST['price'];
 $taxAmount = intval(ceil($price*($TAX-1)));

不,您可以使用第一个方法,而不使用重复的数据填充内存。这里唯一需要注意的是在使用之前对其进行验证,若将其复制到另一个变量,也需要对其进行同样的操作。

我看不出有什么区别!

特别是如果您不想在sql_query中使用它。

唯一让我思考的是,直接在超全局中编写并不常见,因此一些糟糕的程序员可能会留下未经验证的数据。

最后一件事,请确保使用"empty"或"isset"函数检查您的"$_POST"是否存在。

示例:

If(!empty($_POST['price']))
     $taxAmount = intval(ceil($_POST['price']*($TAX-1)));
else
     $taxAmount = -1; //Somethings wrong.

可能的重复