暴露SQL行的ID號是否存在安全風險?評估在查詢字符串中暴露行標識的安全風險
例如,有與12
它是一個安全問題,如果有人通過http://example.com/events/12
訪問它,或有人做一個POST到http://example.com/events/12
以更新記錄的ID的事件(假設我允許這當然)?
暴露SQL行的ID號是否存在安全風險?評估在查詢字符串中暴露行標識的安全風險
例如,有與12
它是一個安全問題,如果有人通過http://example.com/events/12
訪問它,或有人做一個POST到http://example.com/events/12
以更新記錄的ID的事件(假設我允許這當然)?
在Web安全上下文中,向用戶公開ID的問題通常稱爲「不安全的直接對象引用」。
從OWASP:
防止不安全的直接對象引用需要選擇一種方法,用於保護每一個用戶可訪問的對象(例如,對象號,文件名):每用戶或會話間接對象引用
深入的辦法辯護是做兩個1 & 2.
是否顯示,沒關係。
重要的是您檢查呼叫者是否已通過身份驗證並被授權執行正在請求的操作。
有人可能會有一個bot吐出請求到http://example/events/x
,其中x是遞增的數字。也許這是一個試圖查看http://payroll/employee/x
的史努比員工。
驗證用戶以確保他們是他們所說的他們。表單身份驗證,LDAP,你有什麼。
確保用戶有權在被調用時執行每個操作。通常,用戶屬於有權更新老闆工資,創建貨件或取消信用卡的組。
如果要實現作爲上述措施的id
的來源並不重要,無論是對cookie的,隱藏的表單元素,查詢字符串,會話變量等
網址和查詢字符串都特別不安全,當你'使用整數標識符。畢竟,如果有12個,幾乎肯定會有11個或10個。GUID使得更難猜測另一個項目,但仍不應被認爲是安全的IMJO。底線:您需要某種身份驗證機制來確保用戶是他自稱的人,並且需要授權機制來確保允許他查看您要向他展示的內容。