为什么以及如何保护API终端点?
你是如何保护你的api的?
这是数字经济爆炸的时代,大量数据通过api传输。商业、游戏、教育、天气、科学、艺术…你可以说api涵盖了一切。对于一个如此基于api的世界来说,令人惊讶的是对安全的关注很少。
对于开发人员来说,他们的框架默认设置已经足够了;甚至更糟的是,当没有使用框架时,他们认为自己在遵循 安全实践。对于系统管理员来说,他们所依赖的是基础设施或服务提供商提供的默认安全性。
如果你问我,这一点看起来一点都不好看。
不用说,这牵扯到了很多利益,我们只有在发生了一些 真正可怕的 事情后才会意识到。
但首先,先明确一些事情。:)
为什么要保护api端点?
这个应该是显而易见的,对吧?
我们需要保护端点,因为这是业务所依赖的。
虽然这已经是一个足够有说服力的论点,但我想稍微扩展一下观点,并强调其他相关但同样具有致命性后果的问题。
业务损失 📉
这是显而易见的。如果有人成功地破坏了你的api端点,所有的一切都将停滞不前。 安全漏洞 也可能需要很长时间才能恢复,这在商业术语中等于自杀。虽然大多数企业可能不会受到一两个小时的停机时间的影响,但对于某些企业来说,这是不可接受的。
想象一下货币交易所短暂宕机几分钟!
合规问题
如果没有正确保护你的api,可能会给你带来严重的麻烦,这取决于你所涉及的地理位置或产业。例如,如果你为银行业提供服务(尤其是在欧盟),被发现使用不安全的api可能会导致巨大的法律和合规问题。以至于可能会终结你的业务。
声誉损失
被黑客攻击本身就很痛苦,但如果新闻传出公众,你的品牌形象将会遭受无法挽回的损失。例如,索尼已经多次遭到严重黑客攻击,在安全圈内,该公司成了一种 笑柄。
即使没有实际的数据或资金损失,祝你好运试图说服那些惊慌失措的客户。:)
过高的基础设施成本 💰
当你的api在基础设施上运行时,它会消耗资源(主要是带宽、cpu和内存)。例如,在api没有得到适当保护的情况下,恶意外部人员能够与其进行交互,他们可能会强制api进行大量无意义的工作(例如运行繁重的数据库查询),这会导致因为各种原因而使你的费用飙升。
在启用资源的自动扩展的平台上(如 aws),结果可能是令人震惊的(离题了,但如果你在aws上遇到这样的烦恼,他们对这种情况非常理解,并迅速免除了过高的费用 – 至少截至目前为止!)。
团队士气
因此,你可能会认为,允许这些妥协的团队会因此失去士气。但事实并非如此。这些妥协可能是由于基础架构安全性不足导致的,这会让开发人员感到沮丧,反之亦然。
如果这种情况发生的次数足够多,你就会面临一个你会后悔让其发展起来的文化。
竞争对手的收益
假设发生了一次违规行为,但并没有实际损失。然而,你的竞争对手会利用这个事件来宣传他们自己的api,并声称他们的api比你的更安全(即使事实并非如此!)。再一次,祝你说服市场好运。🙂
总的来说,安全违规会带来超出金钱损失的后果。
保护api端点的最佳实践
谢天谢地,有一些易于实施和众所周知的做法可以应用于您的api端点以确保其安全。以下是大多数安全专家推荐的做法。
始终使用https 🔒
如果您的api端点允许api消费者通过http
或其他非安全协议进行通信,那么您就将它们置于巨大的风险中。密码、密钥和信用卡信息可以很容易地被窃取,并且任何中间人攻击或数据包嗅探工具都可以将其作为明文读取。
因此,始终将https
作为唯一可用的选项。无论一个端点看起来多么微不足道,连接http
都不应该是一个选项。tls证书的成本并不高,您可以从ssl商店以低至20美元的价格购买。
单向密码哈希
密码绝不能以明文形式存储,因为一旦发生安全违规,所有用户帐户都将受到损害。同时,对称加密应该严格避免,因为任何足够聪明和坚持不懈的攻击者都能够破解它们。
唯一建议的选择是使用非对称(或“单向”)加密算法来存储密码。这样,既不会让攻击者,也不会让公司内的任何开发人员或系统管理员能够阅读客户密码。
强大的身份验证 💪
现在,几乎每个api都有一种形式的身份验证,但在我看来,oauth2系统效果最佳。与其他身份验证方法相反,它将您的帐户分为资源,并仅允许授权令牌持有者进行有限访问。
同时,将令牌设定为每24小时过期一次也是一个非常好的做法,以便需要刷新令牌。这样,即使您的令牌泄漏了,24小时的期限也有可能减少违规行为的影响。
应用速率限制
除非您的api每分钟都被数百万人使用,否则强制限制客户端在给定时间窗口内对api的调用次数是一个很好的主意。
这主要是为了阻止机器人,它们可以每秒发送数百个并发请求,无故地消耗您的api系统资源。所有的web开发框架都带有速率限制的中间件(如果没有,通过库添加也非常容易),只需花费一两分钟就可以设置好。
验证输入
这听起来像是一个简单的任务,但你会惊讶地发现有多少api都犯了这个错误。验证输入不仅意味着检查传入数据的正确格式,还意味着确保没有可能出现意外。一个简单的例子是sql注入,如果你让查询字符串通过而几乎不检查,它可以删除你的数据库。
另一个例子是验证post请求的大小,并向客户端返回适当的错误代码和消息。试图接受和解析非常大的输入只会导致api崩溃。
如适用,强制执行ip地址过滤
如果你从事b2b服务,并且你的api被企业从设定的位置使用,考虑添加额外的安全层来限制可以访问你的api的ip地址。对于每个新的位置和新的客户端,ip地址都需要与传入请求进行检查。
是的,它会给入门带来麻烦,但最终的结果比其他方式实现的安全性更高。
提高api保护的工具
有没有一些工具可以帮助我们扫描漏洞,或者更好的是,在保护api方面提供第一道防线?
幸运的是,有。有几种工具可以使用,但要注意,说到底,没有安全策略是完美的。话虽如此,这些工具可以提高您的api安全性,因此推荐使用。
apptrana
apptrana的专用api保护功能提供了一种全面的基于风险的解决方案,以保护免受各种api威胁,包括owasp api前10名,基于api的ddos和机器人攻击,嵌入式威胁,数据泄露等等。通过无限自动化的api扫描和手动渗透测试,它持续监控您的风险评分以加强安全性。
apptrana的api保护确保了最全面的解决方案,包括风险检测、api威胁检测、api正向安全策略、api特定ddos策略、api特定机器人模块和api发现功能。
它的api发现确保完全了解api调用,包括未记录和隐藏的api,以了解您的api攻击面。这个专门的api保护收集有关用户详细信息、api使用行为、威胁活动、api调用映射等的信息,以实时分析展示保护状态。
使用indusface apptrana,您可以生成定制的针对api的策略,以实时阻止针对api的滥用。
cloudflare
cloudflare的先进的web应用防火墙(waf)对于确保安全和高效的应用程序和api至关重要。它可以防御ddos攻击,阻止未经授权的机器人访问,检测恶意数据,并扫描浏览器供应链攻击。
cloudflare的广泛全球网络通过其api网关传输大量流量。为了确保其api的安全性,cloudflare采用了综合的框架,包括api发现、集成的api管理和分析以及分层的api防御。
api网关提供安全高效的api管理,包括发现、第七层安全、双向tls、积极的api安全、滥用检测和敏感数据检测。它便于端点识别和监控,防御攻击,实施身份验证,验证openapi模式,并防止数据泄露。
cloudflare api网关可以防范owasp api风险。
invicti
invicti的特点是“基于证据的扫描”。简单来说,通常可能会将不规则的网络条件或一些较少知名的api行为视为安全漏洞,后来发现其实是错误的。
这浪费了资源,因为所有报告的漏洞都需要手动重新扫描以确认它们不是误报。invicti表示该工具能够向您提供足够强有力的概念证明报告,消除对发现的弱点的疑虑。
通过像索尼、religare、可口可乐、华为等公司的客户列表,您可以确信这些人在做正确的事情。🙂
okta
试试使用okta来使您的开发人员专注于增强用户体验并有效保护企业数据。它提供oauth 2.0授权,并适用于移动和web应用程序。它还与第三方api管理服务兼容。
使用okta通过用户友好和专门构建的控制台创建、审计和维护所有api访问策略,无需自定义代码。它为您提供了额外的灵活性,使您无需使用额外的网关实例来保护您的api。
okta包括基于身份的策略,以在一个平台上控制不同类型的用户和服务。根据用户配置文件、网络、组、同意和客户端定义访问权限。使用来自内部系统的动态数据扩展令牌,享受更快的集成和无缝迁移。
它为api提供了集中化管理,并允许您保护api资源。okta专注于安全,可以让您在不同的微服务之间保护访问。
42crunch
42crunch是一个api安全平台,可让开发人员将安全措施无缝集成到api开发流程中,从开发到运行时保证主动测试、修复和保护。
该平台得到了威瑞森、福特、普利司通、安联等顶级品牌的信任。
该公司声称是唯一一个从设计到运行时确保安全治理和合规性的平台。
它通过api审计执行300个安全检查,通过api扫描检测测试和运行时的漏洞,并通过小型容器化的微api防火墙执行运行时api安全策略。
42crunch的api安全测试工具可以发现api安全弱点,而api保护则通过内容验证、威胁检测、流量控制和api微防火墙确保运行时安全。超过80万开发人员采用42crunch api工具。
probely
probely是一款被saas业务、开发人员、安全团队、devops和合规专业人士使用的漏洞扫描器。它可以扫描web应用程序和api,发现漏洞,并提供详细报告以解决这些问题。
olx、trend micro和entertainment partners等一些顶级公司信任这个平台,该平台支持各种web应用程序和api,包括遵循openapi(swagger)规范或postman collection的微服务和独立api。
probely提供了一个有文档的api,并根据上下文调整漏洞的严重程度。它与ci/cd流水线集成,自动化web应用程序和api的安全测试,并与问题跟踪平台同步。
它确保符合pci-dss、owasp top 10、iso27001、hipaa和gdpr等标准。免费试用14天。
apisec
apisec提供了一个自动化的平台,用于主动和持续的api安全测试。它通过彻底测试更新和发布,以确保安全的生产环境,建立客户的信任。
该平台在软件开发生命周期(sdlc)中自动化了对api的全面安全测试。它能够在生产之前进行api的发现、分析和执行定制攻击场景。
apisec通过自动化api安全测试,帮助摆脱重复的手动第三方测试。
apisec与ci/cd、工单和通信平台无缝集成,确保流畅的工作流程。将api渗透测试与风险评估对齐,可以早期发现安全问题,减少应用程序开发中的技术债务。
该平台免费提供一个认证api扫描器,用于识别配置错误和其他基本安全缺陷。它还提供免费课程,如api安全基础知识和专家级api渗透测试;如果感兴趣,可以访问apisec大学。
cequence
cequence是一个屡获殊荣的多功能平台,用于api发现、清单、合规性和动态测试。该平台能够实时辨识和预防欺诈、攻击、利用和数据泄漏。
它为识别api攻击面提供了全面的解决方案,以确保威胁保护以及合规性和法规。该平台可以轻松集成到现有的api和安全基础设施中。
cequence声称在确保交易安全的同时,为数百万用户节省了数百万美元。一些使用该平台的顶级公司包括rbs、美国运通、ulta beauty、poshmark、t-mobile、telstra等。
api发现和风险评估、敏感数据暴露的纠正、防止账户劫持和api风险评估是其主要功能之一。该平台提供免费的api安全评估。
结论
市场上有很多api安全工具可供选择,无论是开源的、免费的还是商业的,或者是这些的任意组合。
从列表中尝试几个,并找出最适合您需求的工具。