RESTful API安全防护八大最佳实践
REST架构风格帮助应用程序相互通信。务必确保RESTful API具备必要的防护措施以抵御攻击者。
Web应用程序开发者经常使用REST API来连接数据库与面向终端用户的前端应用程序。虽然RESTful API提供关键功能,但其流行度和强大功能也使其成为恶意攻击者的首选目标。
保护RESTful API的关键在于保持安全简单。不要陷入“越多越好”的思维误区,因为这只会增加网络犯罪分子可利用的攻击面。
什么是REST API?
REST API使用REST(表征状态转移)架构风格来实现不同应用程序类型之间的通信。 开发者使用REST创建和部署Web应用程序。REST可以自定义,以确定信息和数据应如何存储和传输给最终用户的标准。
RESTful API关联四种方法:
- GET:指定如何向最终用户提供资源访问
- POST:描述如何将最终用户提交的信息(例如通过网站“联系我们”页面)发送到数据库
- PUT:更新当前存在于数据库记录中的信息。例如,此功能允许客户向信用卡门户添加新的支付方式
- DELETE:删除数据库中的记录。例如,当客户提交付款但随后返回取消时,将调用删除功能
RESTful API安全最佳实践
攻击者只需突破一个RESTful API即可窃取大量数据。但有以下方法可以减轻这种风险:
TLS:传输层安全性加密从Web应用程序前端到后端的数据流,反之亦然。它还可以保护其他机制,如API密钥。相互TLS(mTLS)允许前端和后端相互认证,从而提供额外保护层。
授权和认证:授权确认尝试访问RESTful API的人员身份,而认证则分配特定权利和权限,确定该人员可以执行的操作。认证步骤应按照最小权限原则执行。授权和认证机制包括API密钥、创建短期访问令牌的OAuth 2.0以及数字签名的JSON Web令牌。
输入验证:确认最终用户提交的数据真实可信。没有这种检查,黑客可以轻松插入格式错误的信息。这可能导致SQL注入或跨站脚本(XSS)攻击。验证输入时,务必考虑各种变化,如内容长度和格式。
错误日志记录:记录发生的错误日志文件。当API无法完成请求时,最终用户会看到错误消息,例如:错误400:错误请求、错误401:未经授权或错误500:内部服务器错误。保持这些错误消息简洁;透露过多信息会给试图破解API的人提供优势。
控制请求数量:控制请求(也称为节流和速率限制)限制任何单个API可以发出的请求总数。这样做可以中断针对托管应用程序服务器的分布式拒绝服务(DDoS)攻击。
漏洞检查:检查API弱点和差距的最佳方法之一是渗透测试。当红队尝试突破组织的API时,可以详细说明发现的漏洞并提出修复建议。
API发现:通过此方法,组织对使用中的所有API进行清点,几乎像进行审计一样。这是确保不存在恶意API的有效方法。
API网关:此类机制充当过滤和处理所有API请求的关键点。API网关通过提供额外好处来增强安全性,包括:
- 安全策略:使安全团队能够实施认证、授权、加密和访问控制协议
- 路由策略:支持优化API请求流的各种变化
- 可观察性策略:使团队能够创建所有API事务的日志,从而可以检测偏离基线的任何模式