2013-08-28 123 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