我们需要确保响应安全吗?

Posted

技术标签:

【中文标题】我们需要确保响应安全吗?【英文标题】:Do we need to make the response secure? 【发布时间】:2022-01-12 15:10:41 【问题描述】:

大多数时候,我们使用 JWT 访问令牌验证来确保请求例如API 是安全的。但是,我们是否需要确保从该系统(或 API)返回的响应足够安全?我们需要担心吗?我们应该如何减轻它?

感谢各种建议。

【问题讨论】:

#1 response 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 流响应。

【讨论】:

以上是关于我们需要确保响应安全吗?的主要内容,如果未能解决你的问题,请参考以下文章

PHP纯文本加密 - 保持密钥安全

只共享公钥 安全吗?

如何确定 HttpClient 响应的准确性?

使用属性文件是一个安全的选择吗?

云存储是确保数据安全的关键吗?

Access-Control-Allow-Origin: * 不安全吗?