Web安全之越權操作:橫向越權與縱向越權
阿新 • • 發佈:2018-01-06
localhost new 用戶修改 情況 name 查看 普通用戶 新的 登錄
參考:http://blog.csdn.net/github_39104978/article/details/78265433
看了上面的文章,對越權操作的概念還是比較模糊,不明確實際場景。
橫向越權的情況:
用戶登錄模塊中,假設用戶在忘記密碼(未登錄)時,想要重置密碼。假設接口設計為傳參只用傳用戶名和新的密碼。
localhost:8080/user/forget_reset_password.do?username=aaa&passwordNew=xxx
用戶先通過密碼提示問題並回答問題成功後,跳轉到重置密碼的頁面。該頁面下攻擊者在瀏覽器中查看到重置密碼的接口後,可以輸入任意用戶名和密碼後提交,如果輸入的用戶名存在的話就會導致別的用戶被修改了密碼!同樣是普通用戶的權限,修改了其他普通用戶的信息,這種功能情況即是橫向越權。
為了避免以上橫向越權的行為,常用辦法是在用戶回答密碼提示問題正確後,服務端隨機生成一個Token值返回,並給Token設置過期時間(如30分鐘),然後重置密碼的接口中要求前端傳遞該Token,即可確保是當前用戶修改自己的密碼了。
重置密碼的接口改為
localhost:8080/user/forget_reset_password.do?username=aaa&passwordNew=xxx&forgetToken=531ef4b4-9663-4e6d-9a20-fb56367446a5
Web安全之越權操作:橫向越權與縱向越權