你的权限检查正在欺骗你
基于能力的安全模型用不可伪造的权限令牌取代零散的角色检查。以下是如何在 TypeScript 中实现它,同时不让代码变得难以阅读。
事后看来,每个权限漏洞都长得一样。调用栈深处的某个函数假设调用者已经检查了 。但实际上并没有。又或者新增了一个角色,然后你在 47 个文件里 grep ,祈祷自己没有漏掉任何一个。…
2 posts
基于能力的安全模型用不可伪造的权限令牌取代零散的角色检查。以下是如何在 TypeScript 中实现它,同时不让代码变得难以阅读。
事后看来,每个权限漏洞都长得一样。调用栈深处的某个函数假设调用者已经检查了 。但实际上并没有。又或者新增了一个角色,然后你在 47 个文件里 grep ,祈祷自己没有漏掉任何一个。…
大多数代码运行在 ambient authority 之下:每个函数都能触碰一切。Capability-based security 翻转了这一范式,强制函数只能接收显式、受限定范围的权限。
你的 函数可以访问数据库、支付网关和审计日志,仅仅因为它碰巧运行在同一个进程里。如果攻击者在某个 HTTP 处理程序中发现了注入漏洞,他就会继承这一切。这个函数从未主动请求这些权力,它只是凭借部署位置就默认拥有了它们。 这就是 ambient…