我们需要确保响应安全吗?
Posted
技术标签:
【中文标题】我们需要确保响应安全吗?【英文标题】:Do we need to make the response secure? 【发布时间】:2022-01-12 15:10:41 【问题描述】:大多数时候,我们使用 JWT 访问令牌验证来确保请求例如API 是安全的。但是,我们是否需要确保从该系统(或 API)返回的响应足够安全?我们需要担心吗?我们应该如何减轻它?
感谢各种建议。
【问题讨论】:
#1response that comes back from that system (or API) is secure enough
是什么意思?如果您使用 aws rest api 的某个端点,您将获得一个字符串,该字符串将为您的 http 客户端解析。 #2 你认为这个字符串可能是恶意的并影响客户端应用程序吗?
【参考方案1】:
与通常情况一样,答案取决于 ;)
您调用的 API 的所有者是谁?如果您正在调用自己的 API,那么您可以非常确定响应的有效性和安全性。如果您正在调用第三方 API,那么您可能会添加一些检查。如果您从该 API 下载任何文件,可能会扫描文件以查找恶意代码?或者检查响应是否没有尝试注入任何代码等。不过,这可能不是最简单的事情。
您是否使用了与 API 的安全连接?如果您使用 SSL,那么您可以确定没有人篡改响应。此外,您可以验证证书链以验证您连接到正确的 API 端点而不是恶意端点。如果您没有使用 SSL,那么您可能想要验证来自 API 的响应,无论它是否被篡改。如何再次进行验证可能不是微不足道的,但也许可以签署响应?
与 API 对话的客户端在哪里?如果您有一个后端客户端与 API 通信,那么您不必担心响应可能会在客户端发生更改。如果您在浏览器中运行 SPA,则响应可能会被浏览器中的人攻击更改。即使您使用 SSL 连接到 API,此类响应也可能被更改,因为 SSL 在浏览器中终止,并且受感染的用户代理将授予攻击者访问解密的 API 响应的权限。您还可以进行 XSS 攻击,从而改变您的应用程序中的响应。同样,为了防止这种威胁,您需要对响应进行签名,或者采用其他方式验证完整性。
验证响应完整性的一种方法是使用带有非对称签名的已签名 JWT。 API 可以使用其私钥对响应进行签名,然后您可以验证它是否未被篡改。例如。 JARM 规范将其用于 OAuth 流响应。
【讨论】:
以上是关于我们需要确保响应安全吗?的主要内容,如果未能解决你的问题,请参考以下文章