2016-09-29 109 views
1

我正在創建一個網站,用戶需要能夠上傳圖片,我希望他們能夠刪除這些圖片。現在,我有一個頁面,將顯示該用戶上傳的所有圖像,並且我設置了一個php來刪除數據庫中的圖像。它只需要給出圖像的ID。我使用GET方法運行,但我擔心用戶可以找到我的刪除PHP的URL,並隨機放入ids,刪除所有人的圖像。有沒有一種方法可以調整我的代碼以使其更安全?使用GET方法從數據庫中刪除信息安全嗎?

<?php 
$sql = "SELECT id, userid, name, image FROM images"; 
$result = mysqli_query($conn, $sql); 
if (mysqli_num_rows($result) > 0) { 
    // output data of each row 
    while($row = mysqli_fetch_assoc($result)) { 
     if ($imageUser == $row["userid"]){ 
      echo "<tr>"; 
      echo "<th>".$row["userid"]."</th>"; 
      echo "<th>".$row["name"]."</th>"; 
      echo "<th><img src='showimage.php?id=".$row["id"]."'></th>"; 
      echo "<th><a href='imgdelete.php?id=".$row["id"]."'>delete</a></th>"; 
      echo "</tr>"; 
     } 
    } 
} else { 
    echo "0 results"; 
} 

?> 

delete.php簡單地刪除條目WHERE id = $ _ GET ['id'];

+0

用戶登錄\密碼系統將usuall方法 – nogad

+0

檢查[此答案](http://stackoverflow.com/questions/10519064/why-is-using-a-http-get-to-update-state-解釋爲什麼要用post而不是 – Stormhashe

+0

你應該使用post ... post也是一種安全的方法...你可以閱讀一些關於它的內容: https://stormpath.com/blog/put-or-post – Hackerman

回答

0

在RESTful API中,GET請求不應該修改數據。如果你想刪除項目,你應該使用POST或DELETE請求。

+0

如何調整我的代碼以使用POST代替?我應該將刪除鏈接轉換爲表單嗎? –

+0

對不起,這是對我的問題的有效答案。我應該問正確的問題。我會重新發佈一個更好的問題。 –

+1

不,郵政不安全 – nogad