内容安全策略如何真正防止攻击?
How does Content Security Policy actually prevent an attack?
据我了解,内容安全策略header(或页面头部中的元标记)指定允许在网页中加载哪些元素。
这意味着,如果攻击者能够修改页面内容,并添加对有害 javascript 脚本的调用,则不会加载该脚本,因为它来自域CSP 未明确允许。
这是正确的吗?
如果是这样,是什么阻止了攻击者修改 CSP header 本身,从而允许调用他的脚本?
在很多情况下攻击者可以修改页面,但 headers。
例如,将脚本注入页面的 XSS 攻击将能够注入额外的脚本,但无法修改随初始页面一起发送的 headers。 CSP 可以阻止注入的脚本 运行,也可以阻止它加载任何其他脚本。
CSP 是 defence in depth 的一个例子。仅仅因为它在攻击者完全接管托管页面的服务器时失败并不意味着它没有价值。
据我了解,内容安全策略header(或页面头部中的元标记)指定允许在网页中加载哪些元素。
这意味着,如果攻击者能够修改页面内容,并添加对有害 javascript 脚本的调用,则不会加载该脚本,因为它来自域CSP 未明确允许。
这是正确的吗?
如果是这样,是什么阻止了攻击者修改 CSP header 本身,从而允许调用他的脚本?
在很多情况下攻击者可以修改页面,但 headers。
例如,将脚本注入页面的 XSS 攻击将能够注入额外的脚本,但无法修改随初始页面一起发送的 headers。 CSP 可以阻止注入的脚本 运行,也可以阻止它加载任何其他脚本。
CSP 是 defence in depth 的一个例子。仅仅因为它在攻击者完全接管托管页面的服务器时失败并不意味着它没有价值。