我想知道數據連接到主鍵的數據是否存在差異(安全性或性能或不正確的做法)。因此,基本上可以說你有一個這樣的數據庫:影響連接到外鍵的數據的方式之間的差異
用戶
id | username | password
帖子
id | post | user_id
現在讓我們說我們有一個鏈接給用戶的帖子。例如,我們有一個刪除帖子的頁面。
DELETE FROM posts where id=5;
現在只是執行這樣的缺陷,你可以操縱GET
值id
作爲用戶:所以當你點擊刪除按鈕,我們將運行這樣例如查詢。
我學會防止這種情況的方法是通過再次檢查該帖子的用戶ID是否與當前使用PHP和另一個查詢登錄的用戶的ID相同。
但我最近嘗試另一種方式僅僅改變這樣的查詢:
DELETE FROM posts where id=5 and userid=1;
如果你想知道一個消息,如果你刪除了文件,你可以只讓受影響的行數。我的朋友告訴我這是非常糟糕的做法,我可以看到存在,但比第一種方法更糟糕的是什麼? (假設在這兩種情況下都會防止sql注入)。總體差異是什麼?
你是說你會傳遞用戶ID作爲get參數嗎?還是你說你會從登錄用戶獲得用戶ID? –
@AdamForbis我正在談論在AND部分的查詢中添加用戶標識。因此,當有人操縱帖子的ID(試圖刪除其他人的帖子)時,它不會刪除它,因爲它也會自動檢查登錄用戶的user_id。因此,從登錄用戶獲取用戶ID – Loko
會你有沒有需要處理一個管理員帳戶可以刪除該帖子的情況?然後他們不會有相同的用戶ID。 –