我在學習RESTful接口。要更新服務器資源,說與(ID = 1)跟我說的那樣:RESTful PUT和黑客入侵的URL
PUT /contact/1
現在假設當前用戶所屬組織1,擁有聯繫人1.還有組織2,與聯繫人2聯繫。當前用戶不屬於組織2,並且沒有權利。如果用戶攻擊網頁(使用Firebug for Mozilla或針對MSIE的「F12調試器」),並將網頁請求更改爲指向/ contact/2,瀏覽器將快樂地提交請求。
我的服務器必須防止這種跨組織攻擊。在我當前的網站設計中,一旦用戶登錄,我會在會話中存儲一個數據對象(我正在使用Tomcat/Java)。該對象存儲用戶屬於哪個組織。安全檢查代碼將組織傳回的PUT請求與用戶所屬的組織進行比較,並查看傳回的數據是否屬於用戶的組織。在檢測到黑客(組織1的用戶試圖修改屬於組織2的聯繫人2)時,會向瀏覽器返回錯誤。
據我所知,REST應該是無狀態的,但我目前正在使用某種狀態。然而,如果我將用戶信息傳遞到網頁中,我認爲這也可以通過Firebug et.al侵入。
如何在不調用服務器狀態的情況下實現這種安全性?
謝謝, 傑羅姆。
您需要包括每個請求的認證,無論是作爲一個會話cookie或OAuth的風格特徵。 – SLaks
@SLaks - 我恰好同意 - 謹慎地將您的評論擴展爲答案? – Perception