參考:http://blog.csdn.net/github_39104978/article/details/78265433前端
看了上面的文章,對越權操做的概念仍是比較模糊,不明確實際場景。git
用戶登陸模塊中,假設用戶在忘記密碼(未登陸)時,想要重置密碼。假設接口設計爲傳參只用傳用戶名和新的密碼。github
localhost:8080/user/forget_reset_password.do?username=aaa&passwordNew=xxx
用戶先經過密碼提示問題並回答問題成功後,跳轉到重置密碼的頁面。該頁面下攻擊者在瀏覽器中查看到重置密碼的接口後,能夠輸入任意用戶名和密碼後提交,若是輸入的用戶名存在的話就會致使別的用戶被修改了密碼!一樣是普通用戶的權限,修改了其餘普通用戶的信息,這種功能狀況便是橫向越權。瀏覽器
爲了不以上橫向越權的行爲,經常使用辦法是在用戶回答密碼提示問題正確後,服務端隨機生成一個Token值返回,並給Token設置過時時間(如30分鐘),而後重置密碼的接口中要求前端傳遞該Token,便可確保是當前用戶修改本身的密碼了。spa
重置密碼的接口改成.net
localhost:8080/user/forget_reset_password.do?username=aaa&passwordNew=xxx&forgetToken=531ef4b4-9663-4e6d-9a20-fb56367446a5