GD项目回顾之越权
前言
有一種感情叫隱身對其可見,
有一種失落叫你無訪問權限。
想必90后對這句話還是比較熟悉的吧,其實這里所說的就是在QQ和QQ空間里的權限設置,當用戶設置或者修改了權限后,QQ空間就會只對有權限訪問的用戶開放,其他無權限的就不能訪問;這就是做了很明確的權限設置,非常有效的防止了越權。
一、什么是越權?
我們知道權限在計算機行業里的意思是:某個特定的用戶具有特定資源的使用的權力。那么越權又是什么呢?簡單理解,就是用戶擁有了本不屬于他所有的權利。
百度百科:越權就是超越權限或權力范圍的意思。
二、為什么會有越權?
由于沒有用戶權限進行嚴格的判斷,導致低權限的賬號(比如普通用戶)可以去完成高權限賬號(比如超級管理員)范圍內的操作。越權漏洞屬于邏輯漏洞,是由于權限校驗的邏輯不夠嚴謹而導致。
三、越權的分類?
越權分為兩類:水平越權和垂直越權。
水平越權:是指攻擊者嘗試訪問與其擁有相同權限的用戶的資源,比如小明嘗試訪問小紅的資源。
垂直越權:是指一個低級別攻擊者嘗試訪問高級別用戶的資源,比如小明嘗試訪問張老師的資源。
四、解決越權的思想?
1. 不要輕易信任用戶的輸入,需要對用戶的輸入進行校驗;如:正則校驗、長度限制、特殊字符轉碼等。
2. 不要使用動態拼接SQL;參數化sql、類型判定。
3. 不要使用管理員權限的數據庫連接;為每個應用開放有限的獨立權限。
4. 數據庫機密信息不要明文存儲;可以加密、hash等。
5. 異常信息不要直接返回給用戶;使用自定義的錯誤信息進行包裝。
五、具體如何防止越權?
1.防止橫向越權漏洞:
可通過建立用戶和可操作資源的綁定關系,用戶對任何資源進行操作時,通過該綁定關系確保該資源是屬于該用戶所有的。對請求中的關鍵參數進行間接映射,避免使用原始關鍵參數名,比如使用索引1代替id值123等。
2.防止縱向越權漏洞:
建議使用基于角色訪問控制機制來防止縱向越權攻擊,即預先定義不同的權限角色,為每個角色分配不同的權限,每個用戶都屬于特定的角色,即擁有固定的權限,當用戶執行某個動作或產生某種行為時,通過用戶所在的角色判定該動作或者行為是否允許。
總結
- 上一篇: 2021年终总结-向着阳光前进
- 下一篇: vue中如何画饼状图