API 开发方法

总览

API 路径(Endpoint)的一般安全准则。

注意事项
  • 存取控制
    API路径应遵循最小特权原则。具有受保护讯息的服务应服务於最小的群体。
    具有错误配置的存取控制的API可能导致意外的讯息泄漏,或对敏感资料进行未经授权的恶意更改状态的操作。
    • 问题范例:
      POST,允许用户修改帐户讯息,而无需检查用户是否拥有要修改的帐户。
      一个GET请求,该请求无需身份验证即可返回敏感的讯息性讯息。
    • 修正方式
      确定哪些API操作应被视为敏感或公开的。
      • 对於内部API:尽可能限制网路存取。
        理想情况下,这些路径应被限制在一个封闭的网路中。
        并且要求比单一API金钥更强的身份验证。
        例如,多因子身份验证。
      • 对於具有敏感讯息的公开API:
        在执行请求的任何操作之前,需要进行身份验证。
        API金钥应该是可撤销的,也可以是可更新的。
      • 对於提供公开讯息的公开API:
        确保未通过身份验证未通过公开API执行任何状态更改操作。
        考虑速率限制,以防止单个主机在短时间内发出太多请求。
    • 风险等级
      根据情况从低到高不等。
    • 参考资料
      https://www.owasp.org/index.php/REST_Security_Cheat_Sheet
  • 输入验证
    传入的资料在解析时可能格式错误或被设计为导致意外行为。
    根据输入的解析方式,未验证的输入可能包含命令注入或其他有害操作。
    • 修正方式
      • 类型检查:
        确保输入为预期的资料类型,拒绝其他任何内容。
        确保输入为预期的资料类型,拒绝其他任何内容。
      • 长度和大小检查:
        输入应在预期的长度或大小之内。
        拒绝任何大於或小於预期的内容。
      • 将白名单接受的内容类型
      • 限制http方法
    • 风险等级
      根据情况从低到高不等。
  • 验证要求
    有可能在原始请求者和API路径之间的传输过程中修改请求。
    修改後的请求可能导致对原始请求者的资料进行状态更改操作。
    或者导致要提供的资料不正确,修改或意外。
  • 重播攻击
    攻击者发送了先前的真实请求,以使操作在以後的时间再次发生。
    传输中已修改的请求:攻击者会在发送真实请求时修改资料。
  • 通用安全实践
    即使遵循API的最佳安全做法,也有可能错过其他恶意活动。
    • 问题范例:
      没有日志记录或监视丢失的安全事件
      返回服务後端的堆叠纪录或其他描述性讯息
    • 修正方式
      • 记录并监视API活动。
        检测异常可以帮助发现其他地方没有发现的恶意活动。
      • 禁用CORS(跨源资源共享)
        或者将CORS的范围缩小到最小,以防止伪造的请求或资料泄漏。
      • 返回模糊的错误回应。
        向用户返回错误时,请尽可能少地提供讯息。
        不要返回有关服务器环境的任何讯息或调试讯息,例如堆叠纪录。
    • 风险等级
      根据情况从低到高不等。

<<:  Day30:Azure小白如何使用Azure Active Directory Identity protection管好管满

>>:  RxJS Multicast 类 Operator (1) - multicast / publish / refCount / share / shareReplay

Day27 - 登出及连线中断

今天来做登出的功能以及连线中断的处理。 Navigation Action 不论是登出还是中断连线,...

Day27 - 动态模型 part2 (LSTM with attention)

回顾一下昨天提到的,我们希望透过将 attention 机制加到 LSTM 中藉此找出每段语音中重要...

【DAY 12】简单化、视觉化组织团队工作 - Planner

哈罗大家好~ 关於 SharePoint 功能其实还可以再说个五天八夜(?),但我想在善用云端工具提...

人脸辨识-day15 应用层面--1

人脸辨识的技术可使用两种方式搭建云端上或边缘装置上,那要如何选择将系统搭在哪个架构上,就要先了解系统...

Day27 - Kubernetes plugin 范例

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...