为什么 REST API 需要 CSP?

问题描述 投票:0回答:2

我正在尝试更好地了解内容安全策略。我的理解是,它们是向浏览器发出的指令,指示允许从何处加载页面的某些部分 - 图像、媒体、脚本等。

但我不明白为什么一个旨在响应数据请求(例如 JSON)的服务器需要 CSP。它只提供数据供其他方消费。不涉及浏览器。

那么为什么 REST API 需要 CSP?我对第一段的理解是否错误?

security content-security-policy
2个回答
1
投票

正如 @Nick 在评论部分中提到的那样,CSP 可能会指定允许的域,并且需要 TLS。但是,除此之外,即使您的 API 不需要从浏览器请求,也可以从浏览器访问。

如果您不指定 CSP,则您将不允许从拒绝为未指定的浏览器提供服务的浏览器访问您的网站。

假设您的 API 位于域 1 上,而我拥有域 2,我想在其中向您的浏览器请求端点,则您将我的域 2 排除在客户端上执行此操作,并且强制此类第三方从服务器发送其请求 -方面,这对他们来说可能是不可行的。如果这是故意的,那么一切都好。但如果您希望我的域能够从任何应用程序、浏览器请求您域的 API,那么您需要指定这一点。

如果您想允许来自任何来源的请求,那么您还需要相应地指定CSP。

因此,这不是关于您的 API 是否可以从浏览器以外的其他来源请求的问题,而是您是否希望允许通过浏览器的客户端请求访问您的网站,是否希望强制执行 TLS,诸如此类的问题。


0
投票

您对第一段的理解是正确的。它是一个附加的安全层,有助于检测和减轻某些类型的攻击。将 CSP 与 REST API 结合使用取决于用例。 如果您目前没有看到 CSP 的用例,但应该考虑未来的前景来使用它。 基于浏览器的客户端可能会使用您的 REST API。在这种情况下,基于 Web 的客户端代码在浏览器上下文中运行。 您可以使用一些基于浏览器的工具来与您的 API 交互。

© www.soinside.com 2019 - 2024. All rights reserved.