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事务的日志,从而可以检测任何偏离基线的模式