大家好,我是阿萨。
API安全性通常感觉很复杂。但是,如果您的IT团队在API设计和实现中避免了这些常见的陷阱,那么在保护其服务方面将大有作为。
公共云API为开发人员提供了大量高效的可能性。这些接口为应用程序带来了核心功能,并将应用程序和程序连接到外部服务。适当集成的api将使所有用户受益,并增强服务在软件市场上的价值主张。
也就是说,云计算中不安全的API会使环境暴露在恶意威胁之下。企业有责任提供安全的产品,但有时错误会导致安全问题。以下是一些可能导致麻烦的例子:
未审查 API,或在实现之前未执行彻底的代码审查;
开发者没有正确配置他们的 API;而且
缺少对业务逻辑和端点的混淆。
在评估常见的API漏洞时,这三个案例很难触及表面。下面,我们将回顾在云计算中创建不安全api的常见威胁和不良实践。
1. 不必要的风险
一个好的API能够提供相关的功能和最终用户的反馈,无论是在某些事情出错还是按预期工作时。最终用户看不到后台发生了什么。所有输入都是在前端通过GUI提供的。
例如,PayPal的身份API允许客户通过PayPal帐户访问网站。最终用户与登录字段交互,但API默默地完成授权和获取帐户信息的繁重工作。
曝光可能会意外地洞察到这个过程是如何工作的,是什么导致错误,以及后端如何工作以实现其目标。换句话说,API的技术工作是展示出来的。虽然API文档在这里提供了深入的见解,但有些东西不应该公开。恶意行为者可以利用信息,如业务逻辑、API结构或语法和端点,并发起攻击。
暴露的API是web应用程序的主要攻击面。下面是坏人是如何制造麻烦和攻破的。
同样,风险敞口也不只是在技术层面。编码糟糕的API可能会授予不需要的可见性或对受保护数据的访问,从而引发违规行为。这些事件代价高昂,背叛了用户的信任,并导致基础设施出现进一步的问题。
结论:始终确保保护应用程序数据。类似地,在设计任何错误代码消息或反馈时,都要以上下文为重点,而不需要对API体系结构有敏感的见解。另外,不要向最终用户公开报头响应。
2. 不成熟的访问控制
IT团队需要确保只有正确的个人才能访问受保护的信息。此外,所有受保护的服务都必须验证用户的身份。许多API不能适当地验证用户输入,这可能会产生跨系统漏洞。
API提供对来自其他来源的用户数据的访问,并使用应用程序作为获取这些信息的网关。不幸的是,不成熟的身份验证和授权协议可能会导致数据过度共享。
例如,假设你正在网上商店买东西,该商店有集成的第三方支付选项。最终用户可能会喜欢这个选项,因为他们可以依赖现有的支付服务和凭证,而无需将敏感信息交给商家。理想情况下,支付API不会与该在线商店共享任何凭据或支付信息。然而,编码和实现糟糕的api可能会意外地将凭据泄露给不需要的接收者。
结论:使用实现某种令牌系统的 API,特别是OAuth 2.0。这有助于控制对外部数据的访问,而不会泄露秘密。api是很棒的资源;然而,一些数据必须被隔离以保持安全。
3.不合格的加密
数据有两种类型:运动中的数据和静止的数据。有些API在传输过程中不保护数据,这发生在发出HTTP请求时。API从数据库(点A)检索信息,并将其发送到目标服务(点B)。
如果有中间人呢?一些开发人员没有意识到并非所有的数据路径都是安全的。其他公司则采用过时的协议或薄弱的防护罩,无法抵御黑客的攻击。
静止数据通常驻留在数据库中。api直接连接到这些数据库,这就是为什么糟糕的加密是如此有问题。如果不存在加密,甚至不符合标准,个人记录、凭证和支付信息等敏感数据仍然容易受到攻击。这些api甚至可能不符合强制性标准,如HIPAA、Sarbanes-Oxley Act和PCI DSS。
结论:支持强加密的api是最理想的,AES 256或Triple DES是最理想的。对于运动中的数据,API应该使用安全套接字层和传输层安全(TLS)。请确保使用最新版本,因为对于某些应用程序,TLS 1.0或1.1可能不够用。
4. 忽略限制和节流
目前常见的攻击类型是DDoS攻击,在这种攻击中,外部网络向给定服务发送流量激增。有限的api为这些攻击提供了便利,因为它们允许攻击者用错误的请求淹没服务器和网络。这种类型的攻击会导致性能下降、服务中断和服务崩溃。
DDoS攻击的迹象了解如何检测DDoS攻击
许多api没有限制它们被调用的频率,或者强制执行过高的限制。这意味着应用程序容易受到来自API的无休止的活动循环的影响。当然,暂时终止API会阻止用户访问应用的核心功能,但也会造成糟糕的用户体验。
当公司没有考虑API的节流控制时,性能下降就会成为一个真正的问题。用户可能会破坏整个服务生态系统的资源分配和吞吐量。
结论:选择具有可配置速率限制和节流控制的API。这将决定API被调用的频率,导致更好的正常运行时间,提高性能并保护您的服务不受不良行为的影响。寻找适用于API、应用程序和资源本身的多级限制。这也确保了对用户行为的更好控制。
5. 急于上市
从根本上说,API开发人员不能指望不经过审查就能推出好产品。通过清理代码并实现彻底的审查和测试周期,IT团队可以显著减少最初伴随产品出现的bug数量。
当截止日期优先于API质量时,问题就出现了。开发人员通常有很多事情要做,在很多情况下,他们需要输出大量的代码。这种压力会导致编程错误。匆忙推出一个API产品实际上保证了云计算中API的不安全。
当一家公司希望赶在竞争对手之前在市场上站稳脚跟时,它通常会采取行动。虽然API可能是开放的或免费的,但它仍然可以为创建者带来收入。这同样适用于外部开发人员,他们的api有助于吸引用户。开发人员可能没有正确地测试给定的API如何与他们的代码相匹配,或者确定内置控件是否提供足够的数据保护。
结论:双方都必须对API进行测试。安全与收入之间的斗争并非零和游戏。事实上,构建以安全著称的API可以促进长期采用。