我正在尋求最強大的安全措施,以改變網址中的ID以供評論,博客,收件箱等...
有什麼建議嗎?
我正在尋求最強大的安全措施,以改變網址中的ID以供評論,博客,收件箱等...
有什麼建議嗎?
驗證您獲得的數據是一個好主意,如果您期待數字,請確保您獲得數字。
if(isset($_GET['id']) && ctype_digit($_GET['id']))
{
$id = $_GET['id'];
}else
{
$id = 0;
}
如果您關注的是人改變網址,看到的東西,比如請求圖像44時,你只希望向他們展示圖片42,你有幾個選擇:
檢查會話權限以查看是否允許他們執行操作?
如果他們被允許這樣做,然後執行該操作。如果沒有,然後給他們一個403.
+1爲正確的答案。您不能在您的網址中放入任何對最終用戶來說不完全可見的信息...您可以做的最好的辦法是試圖掩蓋它。如果你的安全取決於其他人沒有透過默默無聞,你已經失敗了。對用戶進行身份驗證,存儲該信息並使用它來驗證權限。 – Satanicpuppy
我想象數字簽署get請求並將其附加到該URL將工作。
用只有您的應用程序已知的私鑰對其進行簽名,然後對GET變量進行哈希處理,並在sig = blahblahblah中提供簽名。
這可能會起作用,但我並不真正瞭解保護GET變量的必要性。如果設計正確,那麼GET變量是什麼都不重要。正確設計的應用程序不應該允許用戶GET變量做任何破壞性的事情。
如果它只是一個ID(數字,我猜),所有你需要做的就是驗證它作爲一個整數:
$id = (int) $_GET['id'];
然後你就可以查詢數據庫。當ID不存在且無效時(因爲在這種情況下$id
將爲0
),您將獲得空回報集。
(int)將該值轉換爲整數,但不驗證它。如果有人輸入「23a312」,你會得到23. – preinheimer
對不起,這就是我的意思。糟糕的措辭,我想。 – Franz
雖然這仍然可以在我眼中預期。 – Franz
首先,不要依賴$ _GET獲取關鍵信息。總是仔細檢查用戶是否有權查看該評論ID,博客ID,無論如何。至於ID過濾 - 簡單intval()
將有所幫助(但不要忘記也處理0)
謝謝!偉大的建議...這對我來說是新的,所以你是否說我是否應該在我的if(issest)的末尾添加&& ctype_digit($ _ GET ['id'])) { ?或者我應該這樣做和額外的用戶檢查?如果有,那麼做一個好的方法是什麼? –
添加ctype_digit()檢查將確保用戶只輸入數字。 用戶仍然可以更改URL中的內容(例如,將44更改爲45)。這項檢查不會接受這種修改。 – preinheimer