2016-03-21 88 views
0

我目前正在Laravel PHP框架中開發一個Web應用程序來處理使用HTML表單的所有數據輸入。使用PATCH方法的潛在漏洞

在數據庫中創建新條目不是問題,因爲它使用POST方法,其中ID對用戶是隱藏的,並且在服務器端有驗證。

但是,當涉及到更新或修改數據庫行中的條目時,我正在使用PATCH方法將數據發送到URI /form/{ID},例如/form1/1。我在服務器端執行數據和用戶驗證,以防止來自用戶的不需要的輸入。但是,有時具有HTML知識的某些用戶可以簡單地將的形式從/form1/1改爲/form1/2改爲PATCH將數據改爲ID=2而不是ID=1,將其計爲無用旁路。

有沒有什麼方法可以防止這種情況發生,因爲這具有潛在的安全風險。

+4

您可以通過簡單地檢查數據的所有者是否爲該主題數據所屬的用戶來防止此問題。如果是的話,編輯將發生,否則重定向。 –

+0

除驗證數據的所有權外,是否還有其他驗證需要執行以進一步防止上述問題? – Woody

+1

標題完全是誤導性的,這意味着有一個與'PATCH'方法相關的漏洞。存在此漏洞是因爲您尚未執行檢查。如果你做@MattBurrow提到的,那麼你很好。爲了使這個過程變得微不足道,你可以利用Laravel的中間件,如果檢查成功,它會執行路由回調。 – Mjh

回答

1

您需要實施授權。查看官方文檔以獲取更多詳細信息https://laravel.com/docs/master/authorization

+0

我有權限,除非我驗證數據的所有權,否則用戶可以簡單地將'patch'修改爲任何'ID' – Woody

+0

如果您擁有授權,則用戶只能更新他自己的帖子。 –

+0

也許他認爲他有認證。但是,是的,應該實施授權,嘗試使用安全選民,這是我們在symfony項目中的做法。 – tomazahlin