2014-10-30 29 views
0

假設我有一個ajax請求的鏈接,用於喜歡帖子。它有一個data-id屬性,就是這個帖子的id。這個漏洞叫什麼和如何防止?

<a href="#" data-id="<?php echo $post->id; ?>">Like</a> 

在服務器端,我用這個ID來更新這個帖子的相似號碼。我想知道用戶是否可以使用開發人員工具更改此ID,因此數據會中斷。但是我不知道這個安全威脅的名稱以及如何防止它。任何人都可以幫助我!預先感謝。

+1

參數處理http://www.cgisecurity.com/owasp/html/ch11s04.html在第一行之間閱讀***「在設計糟糕的開發的Web應用程序中......」*** – Sharky 2014-10-30 17:44:55

回答

0

只要確保你不會沿着user_id例如,通過jsajax因爲這很容易被操縱,以使其他用戶like的東西,他們沒有點擊發送。

如果你使用類似:

if(isset($_POST['like_id']) 
{ 
    $like_id = (int) $_POST['like_id']; 
    // some more checks (ie. does this id exist?), and then: 
    $user_id = $_SESSION['user_id']; 

    echo $user_id . " likes post " . $like_id; 
} 

比所有「惡意」用戶可以實現,將是使他的帳戶「喜歡」的東西,而無需通過實際的鏈接去。

,如果使用相反:

$user_id = $_POST['user['user_id']; // don't use this! 

比任何用戶可以發送任何用戶的ID,讓他們「喜歡」的東西,他們並沒有要求你不想讓。

一般來說

不要依賴任何數據從一個POSTGET到來,因爲這可以很容易地改變,以確保該ID是一個整數,確保ID存在,然後進行所有必要的後檢查會相應更新你的數據庫

0

我們可以將所有客戶端數據更改爲攻擊者。在這種情況下,攻擊者也可以更改帖子ID。

例如;如果您從客戶端獲得發帖ID,則將其用於刪除/更新帖子。這將是您的應用程序的安全漏洞。因爲攻擊者可以將post ID數據篡改爲其他內容。攻擊者也知道開發者通常使用自動增量字段來處理這種過程。

緩解:

這種安全問題可能與不安全的直接對象引用。你可以在OWASP網站查看。但是對於所有應用程序來說,方法幾乎相同

1 - 如果您想要獲取/刪除/更新或任何帶有帖子ID的內容,您必須確保相關用戶擁有此操作的權限。

例如:

www.website.com/delete.php?id=1337 

當用戶請求這個URL。 Delete.php文件將從數據庫中刪除帖子。而id值可能會被攻擊者惡搞。

弱勢查詢

DELETE FROM posts Where id = 1337 

安全查詢

DELETE FROM posts Where id = 1337 and owner = $_SESSION['user_id'] 

你可以看到,你必須簽出信息發佈者一樣的是會話所有者。

另外,使用預處理語句。