尝试为多租户 Web 应用程序设置合适的 CSP 策略。 由于用户可以自行添加内容,因此无法将某些域列入白名单或黑名单。
可以将应用程序本身使用的默认 src 列入白名单,但对于其他资源,它必须是通配符,例如 -
ffmpeg
我想实际的问题是 - 设置这样的 CSP 标头与根本不设置一个是否有效?
答案 0 :(得分:1)
如果您的用户可以通过设计将他们自己的 javascript 添加为内容,那么您的应用程序无论如何都容易受到 XSS 的攻击。如果他们不能,那么您应该删除 script-src *
并用 self
替换。这将有助于防止一些 XSS 攻击,这可能是您最关心的问题。
这同样适用于 object-src
,那是否也需要 *
?不应该。其余的 * 值我认为风险较小,现代浏览器通常不会从这些值中运行 javascript。
想到的第三件事是点击劫持。这些页面是否必须显示在框架中?如果不是,那么很简单,您可以将 frame-ancestors
设置为 none
,或者 self
如果您在自己的源上使用 iframe。如果您的用户确实想将他们的页面嵌入到 iframe 中,例如您可以让他们在想要拥有 iframe 时注册他们的来源,并且您的应用程序可以根据来源动态生成合适的 frame-ancestors
csp当前请求。