学习了如何在开发 API 功能的同时避免常见的安全漏洞。在本章中,您将超越基本功能,了解如何将主动安全机制添加到您的 API 中,以确保所有请求都来自真正的用户并经过适当授权。您将保护在第 2 章中开发的 Natter API,使用 Scrypt 应用有效的密码身份验证,锁定与 HTTPS 的通信,并使用 Guava 速率限制库防止拒绝服务攻击。
通过安全控制解决威胁
你将通过应用一些基本的安全机制(也称为安全控制)来保护 Natter API 免受常见威胁。图 3.1 显示了您将开发的新机制,您可以将每种机制与它们防止的 STRIDE 威胁(第 1 章)相关联:
-
速率限制用于防止用户用请求压倒您的 API,从而限制拒绝服务威胁。
-
加密可确保数据在发送到 API 或从 API 发送时以及存储在磁盘上时保持机密,从而防止信息泄露。现代加密还可以防止数据被篡改。
-
身份验证可以确保用户是他们所说的那样,防止欺骗。这对于问责制至关重要,但也是其他安全控制的基础。
-
审计日志是问责制的基础,以防止否认威胁。
-
最后,您将应用访问控制来保护机密性和完整性,防止信息泄露、篡改和提升权限攻击。
注释 如图3.1所示,一个重要的细节是只有速率限制和访问控制直接拒绝请求。身份验证失败不会立即导致请求失败,但如果请求未经身份验证,则稍后的访问控制决策可能会拒绝该请求。这一点很重要,因为我们希望确保即使失败的请求也会被记录,如果身份验证过程立即拒绝未经身份验证的请求,则不会被记录。
这五种基本安全控制共同解决了第1章中讨论的欺骗、篡改、否认、信息泄露、拒绝服务和提升特权等六种基本STRIDE威胁。本章的其余部分将讨论和实施每种安全控制。
参考:livebook