假設我有一個ajax請求的鏈接,用於喜歡帖子。它有一個data-id屬性,就是這個帖子的id。這個漏洞叫什麼和如何防止?
<a href="#" data-id="<?php echo $post->id; ?>">Like</a>
在服務器端,我用這個ID來更新這個帖子的相似號碼。我想知道用戶是否可以使用開發人員工具更改此ID,因此數據會中斷。但是我不知道這個安全威脅的名稱以及如何防止它。任何人都可以幫助我!預先感謝。
假設我有一個ajax請求的鏈接,用於喜歡帖子。它有一個data-id屬性,就是這個帖子的id。這個漏洞叫什麼和如何防止?
<a href="#" data-id="<?php echo $post->id; ?>">Like</a>
在服務器端,我用這個ID來更新這個帖子的相似號碼。我想知道用戶是否可以使用開發人員工具更改此ID,因此數據會中斷。但是我不知道這個安全威脅的名稱以及如何防止它。任何人都可以幫助我!預先感謝。
只要確保你不會沿着user_id
例如,通過js
和ajax
因爲這很容易被操縱,以使其他用戶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,讓他們「喜歡」的東西,他們並沒有要求你不想讓。
一般來說
不要依賴任何數據從一個POST
或GET
到來,因爲這可以很容易地改變,以確保該ID是一個整數,確保ID存在,然後進行所有必要的後檢查會相應更新你的數據庫
我們可以將所有客戶端數據更改爲攻擊者。在這種情況下,攻擊者也可以更改帖子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']
你可以看到,你必須簽出信息發佈者一樣的是會話所有者。
另外,使用預處理語句。
參數處理http://www.cgisecurity.com/owasp/html/ch11s04.html在第一行之間閱讀***「在設計糟糕的開發的Web應用程序中......」*** – Sharky 2014-10-30 17:44:55