你的權限檢查正在欺騙你
Capability-based security 用不可偽造的權限 token 取代散落各處的 role 檢查。以下是如何在 TypeScript 中實作它,同時不讓你的程式碼變得難以閱讀。
事後來看,每個權限漏洞都長得一模一樣。呼叫堆疊深處的某個函式假設呼叫者已經檢查過 。結果沒有。或者新增了一個角色,你在 47 個檔案裡用 grep 搜尋 ,祈禱自己沒有漏掉任何一處。 Capability-based security…
2 posts
Capability-based security 用不可偽造的權限 token 取代散落各處的 role 檢查。以下是如何在 TypeScript 中實作它,同時不讓你的程式碼變得難以閱讀。
事後來看,每個權限漏洞都長得一模一樣。呼叫堆疊深處的某個函式假設呼叫者已經檢查過 。結果沒有。或者新增了一個角色,你在 47 個檔案裡用 grep 搜尋 ,祈禱自己沒有漏掉任何一處。 Capability-based security…
大多數程式碼在 ambient authority 下執行:每個函式都能碰觸一切。Capability-based security 顛覆了這個模式,強制函式必須接收明確且受範圍限制的權限。
你的 函式能夠存取資料庫、payment gateway與審計紀錄,只因為它恰好執行在同一個程序裡。如果攻擊者在某個 HTTP handler 中發現注入漏洞,他們就能繼承這一切權限。這個函式從未要求過這些能力,它僅僅因為被部署在這裡,就理所當然地預設擁有。 這就是 ambient…