白帽子講Web安全(第 10 章 訪問控制)

2021-10-09 05:06:55 字數 1440 閱讀 6778

許可權控制,或者說訪問控制,廣泛應用於各個系統中。抽象的說,都是某個主體( subject )對某個客體( object )需要實施某種操作( operation ),而系統對這種操作的限制就是許可權控制。

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

主體「能夠做什麼」,就是許可權。許可權可以細分成不同的能力( capability )。

在 web 應用中,根據訪問客體的不同,常見的訪問控制可以分為「基於 url 的訪問控制」、「基於方法( method )的訪問控制」和「基於資料的訪問控制」。

訪問控制實際上是建立使用者與許可權之間的對應關係,現在應用廣泛的一種方法,就是「基於角色的訪問控制( role-based access control )」,簡稱 rbac 。

許可權管理其實是業務需求上的乙個問題,需要根據業務的不同需求來實現不同的許可權管理。因此很多時候,系統都需要自己定製許可權管理。定製乙個簡單的許可權管理系統,不妨選擇 rbac 模型作為依據。

這種基於角色的許可權管理( rbac 模型 ),我們可以稱之為「垂直許可權管理」。

不同角色的許可權有高低之分。高許可權角色訪問低許可權角色的資源往往是被允許的,而低許可權角色訪問高許可權角色的資源往往則被禁止。如果乙個本屬於低許可權角色的使用者通過一些方法能夠獲得高許可權角色的能力,則發生了「越權訪問」。

在配置許可權時,應當使用「最小許可權原則」,並使用「預設拒絕」的策略,只對有需要的主體單獨配置「允許」的策略。這在很多時候能夠避免發生「越權訪問」。

相對於垂直許可權管理來說,水平許可權問題出在同乙個角色上。系統只驗證了能訪問資料的角色,既沒有對角色內的使用者做細分,也沒有對資料的子集做細分,因此缺乏乙個使用者到資料之間的對應關係。由於水平許可權管理是系統缺乏乙個資料級的訪問控制所造成的,因此水平許可權管理又可以稱之為「基於資料的訪問控制」。

首先,對於乙個大型的複雜系統來說,難以通過掃瞄等自動化測試方法將這些問題全部找出來。

其次,對於資料的訪問控制,與業務結合得十分緊密。有的業務有資料級訪問控制的需求,有的業務則沒有。要理清楚不同業務的不同需求,也不是件容易的事情。

最後,如果在系統已經上線後再來處理資料級訪問控制問題,則可能會涉及跨表、跨庫查詢,對系統的改動較大,同時也可能會影響到效能。

這種種原因導致了現在資料級許可權管理並沒有很通用的解決方案,一般是具體問題具體解決。乙個簡單的資料級訪問控制,可以考慮使用「使用者組(group)」的概念。比如乙個使用者組的資料只屬於該組內的成員,只有同一使用者組的成員才能實現對這些資料的操作。

oauth 是乙個在不提供使用者名稱和密碼的情況下,授權第三方應用訪問 web 資源的安全協議。

oauth 與 openid 都致力於讓網際網路變得更加的開放。openid 解決的是認證問題, oauth 則更注重授權。

無論選擇哪種訪問控制方式,在設計方案時都應該滿足「最小許可權原則」,這是許可權管理的**法則。

《白帽子講WEB安全》學習筆記之第10章 訪問控制

許可權控制是值某個主體 身份 對某乙個客體需要實施某種操作,而系統對這種操作的限制就是許可權控制。在乙個安全系統中,確定主題的身份是 認證 解決的問題 而客體是胭脂紅資源,是主題發起的請求物件。在主體對客體進行操作的過程,系統控制主體不能 無限制 地對客體進行操作,這過程就是 訪問控制 在web應用...

白帽子講Web安全(第 14 章 PHP 安全)

嚴格來說,檔案包含漏洞是 注入 的一種。在 注入攻擊 一章中,曾經提到過 注入 這種攻擊,其原理就是注入一段使用者能夠控制的指令碼或 並讓伺服器端執行。注入 的典型代表就是檔案包含 file inclusion 檔案包含可能會出現在 jsp php asp 等語言中,常見的導致檔案包含的函式如下。檔...

白帽子講Web安全(第 18 章 安全運營)

俗話說,安全是 三分技術,七分管理 安全對於企業來說,結果才是最重要的。安全方案設計完成後,即使看起來再美好,也需要經受實踐的檢驗。網際網路公司如何規劃自己的安全藍圖呢?從戰略層面上來說,aberdeen group 提到了三句話 find and fix,defend and defer,secu...