訪問控制--越權


訪問控制的含義:

在互聯網安全領域,尤其是web安全領域中,“權限控制”的問題可以歸結為“訪問控制”。

訪問控制廣泛應用於各個系統中。抽象地說,都是某個主體對某個客體需要實施某種操作,而系統對這種操作的限制就是權限控制。

在一個安全系統中,確定主體的身份是“認證”解決的問題;而客體是一種資源,是主體發起的請求的對象。在主體對客體進行操作的過程中,系統控制主體不能“無限制”的對客體進行操作,這個過程就是“訪問控制”。

 

訪問控制的分類:

在web應用中,根據訪問客體的不同,常見的訪問控制可以分為“基於URL的訪問控制”、“基於方法的訪問控制”、“基於數據的訪問控制”。

當訪問控制存在缺陷時,會如何呢?

一、未授權訪問

在正常情況下,這些頁面是不會被鏈接到前台頁面上來的,但是把需要保護的頁面“藏”起來,並不是解決問題的辦法。

攻擊者會使用一部包含很多后台路徑的字典把這些“藏”起來的頁面掃出來。

 

預防措施:只需要加上簡單的“基於頁面的訪問控制”就可以解決此問題。

 

二、垂直權限管理

訪問控制實際上是建立用戶與權限之間的對應關系,現在應用廣泛的是一種“基於角色的訪問控制”,簡稱RBAC。

RBAC事先會在系統中定義出不同的角色,不同的角色擁有不同的權限。一個角色實際上就是一個權限的集合。

系統所有用戶都會被分配到不同的角色中,一個用戶可能擁有多個角色,角色之間有高低之分。

在系統驗證權限時,只需要驗證用戶所屬角色,然后就可以根據該角色所擁有的權限進行授權了。

 

兩個框架:Java框架Spring Security、PHP框架Zend Framework

 

預防措施:

1、不同角色的權限有高低之分。高權限角色訪問低權限角色的資源往往是被允許的,而低權限角色訪問高權限角色的資源往往則被禁止。

如果一個低權限角色的用戶通過一些方法能夠獲得高權限角色的能力,則發生了“越權訪問”

2、在配置權限時,應當使用“最小權限原則”,並使用“默認拒絕”的策略,只對有需要的主體單獨配置“允許”的策略。

 

三、水平權限管理

用戶A和用戶B都屬於同一個角色,但是用戶A和用戶B都各自擁有一些私有數據,在正常情況下,應該只有用戶自己才能訪問自己的私有數據。

在RBAC基於角色訪問控制的模型下,系統只會驗證用戶A和用戶B同屬於一種角色,而不會判斷用戶A是否能訪問只屬於用戶B的私有數據。

因此,發生了“越權訪問”。稱之為“水平權限管理問題”。

 

相對於垂直權限管理來說,水平權限問題出在同一角色上,系統只驗證了能訪問數據的角色,既沒有對角色內的用戶做細分,也沒有對數據的子集做細分。因此缺乏一個用戶到數據之間的對應關系。因此水平權限管理又可以稱為“基於數據的訪問控制”。

 

今天的互聯網中,垂直權限的問題已經得到普遍的重視,並已經有了很多成熟的解決方案。但水平權限的問題還未得到重視。

首先,對於一個大型復雜系統來說,難以通過掃描等自動化測試方法將問題全部找出來。

其次,對於數據的訪問控制,與業務結合十分緊密。有的業務有數據訪問控制的需要,有的業務沒有。

最后,如果在系統上線后再來處理數據級訪問控制的問題,可能會涉及到跨表,跨庫查詢,對系統的改動較大,同時也可能會影響到性能。

 

預防措施:

1、一個簡單的數據級訪問控制,可以考慮使用“用戶組”的概念。比如一個用戶組的數據只屬於該組內的成員,只有同一用戶組內的成員才能實現對這些數據的操作。

2、可以考慮實現一個規則引擎。將訪問控制的規則寫在配置文件中,通過規則引擎對數據訪問進行控制。

 

eg:某東商家中心某處可越權取消全量商家的優惠券和越權為任意門店創建優惠券


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM