2013-08-28 58 views
3

我升级我的IDE(Netbean)至1.7.4测试版,测试它...它似乎现在对给我,每当我进入我的超全局变量的警告。它说安全问题访问时,PHP超全局直接

直接

我目前只是用这个

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

如何安全的关注很多,这真的是不要访问supergolobal $ _POST阵列?

这是正确的方式做到这一点,而这有区别吗?

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

显然NetBeans的要你使用'filter_input()'代替。我不确定为什么它是如此糟糕的事情,尤其是如果你自己在清理数据。 https://netbeans.org/bugzilla/show_bug.cgi?format=multiple&id=234280 – aynber

回答

1

不,您可以使用第一种方法,而不是用重复数据填充内存。这里唯一关心的是在使用之前验证它,如果你将它复制到另一个变量中,你也需要在它上面做同样的事情。

0

我看不出有什么区别!

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

,让我想到的唯一的事情,就是它没有太多共同的超全局变量直接写,所以一些劣质的程序员可以用未经验证数据离开它。

最后一两件事,一定要与“空”或“isset”功能来检查你的“$ _ POST”的存在。

例如:

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

Possible duplicate