我具有以下URL来调用API网关后面的服务:https://
问题:它足够安全吗?某人说这是不安全的,因为任何人都可以使用该URL来调用我在URL之后的服务,而不仅仅是我自己。一种解决方案是,我可以启用API密钥,并在调用url时将API密钥作为请求标头附加。另一个解决方案是使用AWS Cognito等。
为什么它不安全?
我了解API网关也可以使用AWS cognito进行身份验证。即,当一个人访问该URL时,将要求他输入凭证(用户/密码),但是同样,该凭证也可以被盗,与
IMO(使用
我正确吗?谁能解释为什么使用API Gateway或AWS Cognito比不使用它们更安全?
与上述问题有关的另一个问题:
由于该网址使用https,因此在对请求标头(如API密钥)和诸如用户名/密码之类的内容进行加密时,不会对网址本身(包括
答案 0 :(得分:2)
最重要的安全因素始终是风险。我们永远无法创建一个完全安全的系统,我们只能尝试在攻击该系统的成本与破坏该系统的成本之间取得平衡。所以首先,我想问:如果有人知道您的API的URL,会有什么风险?
您是对的-这是最小的安全形式。仅此而已。
问自己一系列问题:
攻击者可以从响应中学到什么?-如果您只需要知道存在一些东西即可开始获得响应,则可以开始对其进行测试以查看其行为。您可以通过限制所有响应来阻止此操作,但这可能会对合法客户产生负面影响,所以您问...
我可以限制攻击者从响应中学到什么吗?-如果攻击者需要更多信息来构造合法请求,则可以进行限制和约束所有不合法的请求。
问题从那里继续升级。一切都取决于投资回报率-您所保护的东西的价值是什么,攻击的表面积是多少,被破坏的风险是什么?最重要的是客户和用户的信任。 作为专家,我们必须保护我们所托付的信息的完整性。
在HTTPS(TLS / SSL)下有一个单独的问题,来自第三方侦听器的受保护对象是什么,不受保护的是什么?简短的答案是,如果您请求foo.com/bar
,则任何想知道的人都可以看到主机名(foo.com),而路径(/bar
)则不可见。 Cookie,标头以及请求中包含的其他任何内容都是安全的。