
后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载导读本文以 system-design-101 仓库中 top-12-tips-for-api-security.md 的 12 条 API 安全清单为骨架逐条展开讲解其在真实 Web 与微服务架构中的落地方式。读完本文你将掌握从传输加密、认证授权、限流防刷、版本治理到网关防护、错误处理、输入校验的一整套可执行的 API 安全加固方案。为什么 API 安全值得单独列一张清单API 是前后端、微服务之间交换数据的主要通道也是攻击者最容易接触到的系统入口。一个不安全的 API 可以暴露整个应用甚至放大为数据泄露事件。基于这一共识system-design-101 仓库在 top-12-tips-for-api-security.md 中给出了 12 条简洁的安全要点本仓库中还有 a-cheatsheet-to-build-secure-apis.md 等文档与它互相印证。这 12 条要点可以按防护层次分为四组也是本文的展开结构传输与认证Use HTTPS、Use OAuth2、Use WebAuthn、Use Leveled API Keys访问控制与防滥用Authorization、Rate Limiting、Whitelisting演进与治理API Versioning、Use API Gateway健壮性兜底Check OWASP API Security Risks、Error Handling、Input Validation下面逐条展开。1. Use HTTPS加密传输是一切安全的前提核心要点所有 API 流量都应通过 HTTPSTLS传输。HTTPS 对传输中的数据进行加密防止中间人man-in-the-middle攻击窃听报文。它同时提供完整性校验确保数据在传输途中没有被篡改。在浏览器与服务器之间TLS 通过握手协商加密套件、交换证书并验证服务器身份https-ssl-handshake-and-data-encryption-explained-to-kids.md 对此有专门讲解。落地建议仅通过 443 端口对外提供服务对 80 端口执行 301 跳转配置 HSTS 响应头强制客户端使用 HTTPS不要在 URL 查询参数中放置敏感信息它们会被记入访问日志与浏览器历史。2. Use OAuth2用标准授权框架替代自造认证核心要点不要让用户把密码交给第三方应用改用 OAuth2 委托授权。OAuth2 是一个允许第三方应用在用户授权范围内访问其数据的标准框架整个过程不需要暴露密码oauth-2-explained-with-siple-terms.md。一次 OAuth 授权获得的 token 可以做到单点登录SSO一次登录即可访问多个服务。跨系统授权在不同系统间共享访问权限无需重复登录。受限的资料访问只读取用户允许开放的那部分资料。oauth-20-flows.md 列出了主要的授权流程Authorization Code Flow最常用。用户认证后客户端先拿到授权码再换取 access token 与 refresh token。Client Credentials Flow适用于服务到服务M2M的调用场景。Implicit Flow早期面向单页应用的简化流程access token 直接返回客户端官方现已不推荐。Resource Owner Password Grant Flow允许用户直接把用户名密码交给客户端换取 token仅建议在高度可信的一方场景使用。在 session-cookie-jwt-token-sso-and-oauth-2.md 中仓库用一张图把 Session、Token、JWT、SSO、OAuth2 的定位讲清楚了Session 靠服务端存储加 CookieToken/JWT 把身份编码进令牌无状态但需要加解密OAuth2 则专注于受控授权。3. Use WebAuthn无密码认证的现代选择核心要点用 WebAuthnWeb Authentication为 API 与 Web 应用提供基于公钥密码学的无密码认证。WebAuthn 的思路是在用户的设备如安全密钥、指纹、Face ID上生成密钥对私钥永不离开设备服务器只保存公钥。认证时服务器用挑战值challenge验证签名因此不存在可被钓鱼的共享口令天然抵御撞库与中间人窃取口令认证过程不需要服务端存储明文密码也不需要传输敏感凭证。这与本仓库 top-4-forms-of-authentication-mechanisms.md 所介绍的多因素认证体系互补常用于与 OAuth2、Passkey 组合实现高强度登录。4. Use Leveled API Keys分级 API Key避免一把钥匙走天下核心要点API Key 应分级管理不同调用方拥有不同权限与配额而不是所有调用方共用一把全局钥匙。常见分级维度按环境分级开发devKey、测试stagingKey、生产prodKey 互相隔离生产 Key 权限最高、配额最严格按调用方分级内部服务、合作伙伴、第三方开发者分别使用不同 Key便于独立限流、审计与吊销按能力分级只读 Key、读写 Key、管理 Key 分层签发最小权限原则落地。落地建议Key 本身不是认证终点应配合 IP 白名单、签名或 OAuth token 使用Key 泄露时能单独吊销而不影响其他调用方。5. Authorization认证之后必须再做授权核心要点认证Authentication回答你是谁授权Authorization回答你能做什么两者必须分离并都执行。不要只依赖是否登录来判断要校验请求者对具体资源的访问权限优先采用基于角色的访问控制RBAC按角色统一管理权限减少未授权操作风险a-cheatsheet-to-build-secure-apis.md对细粒度场景可叠加基于属性的策略防止水平越权用户 A 访问用户 B 的资源与垂直越权普通用户调用管理员接口。落地建议在每个受保护接口入口统一执行授权校验不要散落在业务代码里OAuth2 的 scope 也可以用来表达授权范围与 RBAC 配合使用。6. Rate Limiting限流是防刷与抗 DoS 的第一道闸核心要点通过限流限制单个 IP 或单个用户在一定时间窗口内的请求次数防止 DoS 攻击、暴力破解与接口滥用同时保证系统公平性a-cheatsheet-to-build-secure-apis.md。限流需要回答三个问题按谁限按 IP、用户、API Key 还是设备指纹按什么算法固定窗口、滑动窗口、令牌桶、漏桶仓库 top-6-load-balancing-algorithms.md 涉及相关思路the-ultimate-redis-101.md 则展示了用 Redis 实现分布式限流的常见做法超限怎么办返回 429 Too Many Requests并带上Retry-After响应头告知客户端何时可重试。落地建议对登录接口单独设置更严格的限流因为它是暴力破解的主要目标限流规则建议收敛在 API 网关统一执行。7. API Versioning版本化是安全演进的前提核心要点API 会持续演进直接原地修改接口会破坏既有调用方也会让老客户端带着旧漏洞长期存在。版本化让新老行为并行、可灰度、可下线。常用版本策略URI 路径版本/api/v1/orders、/api/v2/orders最直观、最常用请求头版本Accept: application/vnd.company.v2json路径保持干净查询参数版本?version2实现简单但对缓存不友好。落地建议明确版本的生命周期与弃用策略老版本到期后强制下线对新版本做安全回归测试避免新功能上线、旧漏洞随行。8. Whitelisting白名单收紧入口核心要点默认拒绝、显式放行是比黑名单更安全收敛的防护思路。可白名单化的对象包括允许的请求源/域名通过 CORS 白名单控制浏览器跨域访问允许的调用方 IP管理端与内部接口只对特定网段开放允许的 HTTP 方法接口只开放实际需要的 GET/POST/PUT/DELETE关闭其余方法允许的字符集与枚举值对请求字段做白名单校验而非黑名单过滤。API 网关在这一层常执行 allow-list/deny-list 检查what-does-api-gateway-do.md 的 Step 3。9. Check OWASP API Security Risks以行业标准自查核心要点以 OWASPOpen Web Application Security Project维护的 API Security Top 10 为基准对 API 做周期性安全评审。自查清单通常覆盖BOLA/IDOR对象级越权能否通过修改资源 ID 访问他人数据对象属性级授权失效能否越权读写额外字段过度数据暴露响应是否返回了比需求更多的字段资源消耗与无限制请求是否缺少配额与限流认证失败与授权失效认证机制是否可被绕过SSRF服务端请求是否可被诱导访问内网资源。落地建议把 OWASP Top 10 融入上线前的安全评审 checklist并在每次接口变更后复查受影响条目。10. Use API Gateway把安全策略收敛到统一入口核心要点API 网关位于客户端与后端服务之间是执行安全策略的统一入口避免每套微服务各自实现一套残缺的防护。结合 api-gateway-101.md 与 what-does-api-gateway-do.md网关在安全上承担的关键职责包括Step 2解析并校验 HTTP 请求中的属性Step 3执行 allow-list/deny-list 白名单检查Step 4对接身份提供方Identity Provider完成认证与授权Step 5应用限流规则超限即拒绝请求Steps 6-7按路径匹配把请求路由到对应服务Step 8按需做协议转换再转发到后端Steps 9-12统一处理错误、故障熔断circuit break、日志监控如 ELK与缓存。此外网关还承担负载均衡、API 组合与缓存等功能api-gateway-101.md。把 HTTPS 终止、限流、鉴权、白名单全部收敛到网关是集中管控、后端瘦身的关键一步。11. Error Handling错误信息也会泄露攻击面核心要点错误处理不当会向攻击者泄露内部实现细节堆栈、SQL、依赖版本、文件路径成为侦察阶段的免费情报。错误处理原则统一错误响应结构固定使用{ error: { code, message, details } }之类的标准格式对内记录、对外模糊详细堆栈写日志与监控响应给客户端的是脱敏后的通用信息区分语义码用标准 HTTP 状态码表达语义如 400参数错误、401未认证、403未授权、404不存在、429限流、500服务端错误不泄露敏感数据日志中不得记录信用卡号、密码、凭据等a-cheatsheet-to-build-secure-apis.md 同样强调Dont log sensitive data。落地建议对异常做全局兜底处理确保任何未捕获异常都不会以原始堆栈形式出现在 HTTP 响应中。12. Input Validation输入校验是最后一道防线核心要点对所有进入系统的数据参数、请求体、请求头、路径变量、查询字符串做校验防御注入攻击与异常数据格式a-cheatsheet-to-build-secure-apis.md。校验要点类型与长度字段类型、长度、取值范围在进入业务逻辑前先行校验内容白名单枚举值、字符集做白名单约束防注入对 SQL、NoSQL、命令与模板注入场景配合参数化查询与转义使用防御异常载荷限制请求体大小拒绝畸形 JSON/XML防止解析器被攻击。输入校验应发生在最靠近边界的位置网关或框架层而不是等到业务代码深处才发现数据不合法。把 12 条要点串成一条纵深防线以上 12 条不是孤立的技巧而是一条纵深防御defense in depth链路从外到内依次是传输层HTTPS第 1 条保证流量可信入口层API 网关第 10 条统一执行白名单第 8 条、限流第 6 条与错误收敛第 11 条身份与权限层OAuth2第 2 条、WebAuthn第 3 条、分级 API Key第 4 条负责认证Authorization/RBAC第 5 条负责授权数据与逻辑层输入校验第 12 条守住业务边界治理与进化层API 版本化第 7 条保证安全演进OWASP 自查第 9 条让防线随威胁持续更新。对任意一个新 API都可以把这张清单当作上线前的安全检查表传输加密了吗认证授权分离了吗限流配额配了吗错误信息脱敏了吗输入校验做了吗逐条对过API 的安全基线就基本立住了。system-design-101 仓库中的 top-12-tips-for-api-security.md 正是这样一个可随手引用的起点配合 a-cheatsheet-to-build-secure-apis.md、oauth-20-flows.md、api-gateway-101.md 等文档可以继续深入到每个子主题。赞分享后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载相关推荐如何设计一个安全系统12 个核心安全设计要点全解析system-design-101 实战指南如何设计一个安全系统12 个核心安全设计要点全解析system design 101 实战指南 安全系统设计并非某一个环节的加固而是一条贯穿身份认证、后端文档教程Memcached 与 Redis 选型指南System Design 101 仓库中的缓存对比全解析Memcached 与 Redis 选型指南System Design 101 仓库中的缓存对比全解析 Memcached 与 Redis 的差异是系统设计面后端文档教程System Design 101数据仓库架构设计指南System Design 101数据仓库架构设计指南 你是否还在为如何构建高效的数据仓库而烦恼面对复杂的业务数据不知从何下手本文将从基础概念到实际架构后端文档教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考