2010-06-07 69 views
0

嘿傢伙快速問題,我有一個複選框系統,其中的項目列表可以檢查和刪除點擊一個按鈕。我目前使用請求,它的工作,但我想知道如果$ _REQUEST是某種安全風險或不當。如果有人有任何建議,我將不勝感激。我應該改爲$ _POST嗎?如果是這樣,那麼最好的方法是什麼?

foreach ($_REQUEST as $key=>$value) { 
    if (substr($key,0,3)==="img") { 
     $id = substr($key,3); 
if(isset($_REQUEST['Delete'])) { 

$sql = 'SELECT file_name,username FROM images WHERE id=?'; 
$stmt = $conn->prepare($sql); 
$result=$stmt->execute(array($id)); 

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
$image=$row['file_name']; 
$user=$row['username']; 
$myFile = "$user/images/$image"; 
unlink($myFile); 
} 


<input id=\"img".$id."\" name=\"img".$id."\" type=\"checkbox\"> 
+0

可能重複[使用$ _REQUEST \ [\]?]有什麼問題(http://stackoverflow.com/questions/2142497/whats-wrong-with-using-request) – Gordon 2010-06-07 06:28:41

回答

3

是的。您應該將其更改爲$ _POST。始終使用超過$ _REQUEST的適當Superglobals。

由於數據在$ _REQUEST中彙編的順序,很可能這些鍵不會是您所期望的。這可能會導致嚴重的安全隱患。請參閱:

0

當你的應用程序使用增長的$_REQUEST代替相應的陣列肯定會讓你的文檔的噩夢。使用$_REQUEST來獲得$_GET$_POST的值是只是不必要的。

0

不是一個真正的安全問題(攻擊者可以製作他想要的任何GET/POST請求,甚至通過CSRF從合法用戶的瀏覽器發送),但是維護問題,因爲意外的cookie值可能會覆蓋請求參數。如果您接受GET等請求,也可能會遇到麻煩。刪除東西 - GET請求被認爲是安全的,並且用戶代理可以自由地發送它們。您只應接受POST來更改數據或內部狀態的請求以及其他所有內容的GET請求。

相關問題