我一直在与一些团队进行哲学辩论,围绕隐藏Swagger / OAS API文档以提高应用程序安全性的想法。
基本上有两种思路:1.发布文档供任何人使用,或2.仅允许经过身份验证/授权的用户访问文档。
这两种方法都不会影响我们API身份验证/授权方法的真正优势-它们仍将在每个API调用中强制执行。
争论的主要症结在于,记录API方法将使不良行为者有机会闯入我们的系统。我觉得那是一个很低的门槛。
但是,我很好奇这方面是否有任何常规的安全惯例或指南。
答案 0 :(得分:1)
第一
安全权衡一切
示例: 如果没有风险驱动方法,那么安全是您的第一要务。
如果您信任开发人员并在没有任何审核和两个因素的工作流的情况下授予开发人员访问生产系统的权限,则会遇到安全问题。
第二:
您必须分析您的风险。风险是概率和影响的二维值,如果风险太高,则必须采取措施以降低风险。
示例: 有人入侵您的API的可能性有多大?
让我们说,影响为very high
,概率为very low
。
如果您的采购订单不愿意承担这种风险,则必须采取一些措施来降低它。
一个想法可能是隐藏API规范,但这只会降低发生这种风险的可能性吗?而且可能性已经非常低。因此,这不再降低风险。
因此,您必须减少影响。 好吧,这取决于为什么影响如此之大,对吧?
另一方面:假设您猜想当规范和api为GA时“有人入侵您的api”的可能性为moderate
。
然后隐藏该规范可能会稍微降低几率。可能从moderate
到low
。这样可以将您的风险从High risk
降低到Moderate risk
。
结论:隐藏api规范是一项可降低某人未经许可访问您的api的可能性的操作。
如果概率已经非常低,则无需隐藏有关安全性问题的api规范。隐藏规范可能还有其他原因。