HTML 的 Content-Security-Policy 是否可以防止内联脚本攻击?
Does HTML's Content-Security-Policy protect against inline scripting attacks?
例如,我可以理解它如何与注入然后链接外部 JS 文件的人一起工作,但是直接在脚本标签中编写脚本呢?你无法判断它是否来自其他来源。
默认情况下,CSP 确实可以防止这种情况发生。正如您所说,很难告诉 CSP 这些内容的真正来源,默认情况下通过禁止内联脚本(包括诸如 onclick="" 属性之类的东西)来解决这个问题。只有两种方法可以使用内联脚本:指定 'unsafe-inline'
禁用保护。或者通过指定 nonce
或 hash
将特定内联脚本列入白名单。
值得注意的是,在撰写本文时(2015 年 8 月)并非所有浏览器都支持将内联脚本列入白名单的 nonce 和 hash 方法,因此这可能会在尚未准备好 CSP 级别 2 的浏览器中导致不良行为.
例如,我可以理解它如何与注入然后链接外部 JS 文件的人一起工作,但是直接在脚本标签中编写脚本呢?你无法判断它是否来自其他来源。
默认情况下,CSP 确实可以防止这种情况发生。正如您所说,很难告诉 CSP 这些内容的真正来源,默认情况下通过禁止内联脚本(包括诸如 onclick="" 属性之类的东西)来解决这个问题。只有两种方法可以使用内联脚本:指定 'unsafe-inline'
禁用保护。或者通过指定 nonce
或 hash
将特定内联脚本列入白名单。
值得注意的是,在撰写本文时(2015 年 8 月)并非所有浏览器都支持将内联脚本列入白名单的 nonce 和 hash 方法,因此这可能会在尚未准备好 CSP 级别 2 的浏览器中导致不良行为.