Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何打破内容安全策略?_Javascript_Html_Security_Http Headers_Content Security Policy - Fatal编程技术网

Javascript 如何打破内容安全策略?

Javascript 如何打破内容安全策略?,javascript,html,security,http-headers,content-security-policy,Javascript,Html,Security,Http Headers,Content Security Policy,内容安全策略看起来非常健壮,但我认为它并不完美(我也看到有消息称它是XSS的“部分”预防)。我的问题是:它不能阻止什么类型的XSS攻击?没有,所有浏览器都实现了它,因此使用不受支持的浏览器的用户它不提供保护 即使是在受支持的浏览器上,除非内容安全策略是禁用所有JavaScript(内联、内部/外部域),否则它仍然会保留可以运行JavaScript的区域。这意味着,如果任何恶意JavaScript可以进入这些区域,那么内容安全策略将不会阻止XSS的发生 CSP不停止XSS的一些示例: 如果应用

内容安全策略看起来非常健壮,但我认为它并不完美(我也看到有消息称它是XSS的“部分”预防)。我的问题是:它不能阻止什么类型的XSS攻击?

没有,所有浏览器都实现了它,因此使用不受支持的浏览器的用户它不提供保护

即使是在受支持的浏览器上,除非内容安全策略是禁用所有JavaScript(内联、内部/外部域),否则它仍然会保留可以运行JavaScript的区域。这意味着,如果任何恶意JavaScript可以进入这些区域,那么内容安全策略将不会阻止XSS的发生

CSP不停止XSS的一些示例:

  • 如果应用程序正在使用内联(在页面上)JavaScript,并且CSP策略允许它。如果未编码/未验证/恶意值被放入页面,那么浏览器将运行恶意JavaScript,就像它将运行预期的JavaScript一样。(目前ASP.Net Web表单应用程序需要在页面上运行JavaScript,因此显示的任何恶意输入都将由浏览器执行
  • 如果您正在为应用程序动态创建JS文件,并且在该文件中插入了未编码/未验证/恶意值,则会导致XSS漏洞
  • 如果您通过http而不是https发送页面和/或JavaScript文件,则MITM攻击可以通过网络修改值
  • 如果您正在从第三方域加载JavaScript文件,并且这些文件的安全性受到威胁,则可能会将恶意脚本发送到您的应用程序,而不是最初预期的脚本(想想CDN)
这些只是我脑海中能想到的一些例子

其中一些问题看起来可以通过使用CSP级别2指令来缓解,但对它们的支持有限


简而言之,CSP是一个非常好的防御层,但它不应该是你唯一的防线。尽管它不会覆盖所有内容,也不是所有当前支持它的浏览器,但它是一个额外的安全层,我可以用来确保我的应用程序和用户的安全。

没有所有浏览器都实现了它,因此使用不受支持的浏览器的用户呃,它不提供保护

即使是在受支持的浏览器上,除非内容安全策略是禁用所有JavaScript(内联、内域/外域),否则它仍然会保留可以运行JavaScript的区域。这意味着,如果任何恶意JavaScript可以进入这些区域,则内容安全策略将不会阻止XSS的发生

CSP不停止XSS的一些示例:

  • 如果应用程序正在使用内联(页面上)JavaScript,且CSP策略允许。如果未编码/未验证/恶意值被放入页面,则浏览器将运行恶意JavaScript,就像运行预期的JavaScript一样。(目前ASP.Net Web表单应用程序需要在页面上运行JavaScript,因此显示的任何恶意输入都将由浏览器执行
  • 如果您正在为应用程序动态创建JS文件,并且在该文件中插入了未编码/未验证/恶意值,则会导致XSS漏洞
  • 如果您通过http而不是https发送页面和/或JavaScript文件,则MITM攻击可以通过网络修改值
  • 如果您正在从第三方域加载JavaScript文件,并且这些文件的安全性受到威胁,则可能会将恶意脚本发送到您的应用程序,而不是最初预期的脚本(想想CDN)
这些只是我脑海中能想到的一些例子

其中一些问题看起来可以通过使用CSP级别2指令来缓解,但对它们的支持有限


简言之,CSP是一个非常好的防御层,但它不应该是您唯一的防线。尽管它不会覆盖所有内容,也不是所有当前支持它的浏览器,但它是一个额外的安全层,我可以用来确保我的应用程序和用户的安全。

您能更具体地说明一下吗“如果任何恶意的JS可以进入这些区域”?怎么会发生这种情况?假设您不允许内联脚本或eval,CDN(例如托管jquery)妥协就是一个例子。子资源完整性有助于缓解这种威胁。答案很好。我同意-我倾向于将CSP视为一个安全网。XSS的真正防御措施是正确的输出编码,然而,如果编码例程中遗漏了一个输出,那么健壮的CSP可以节省您的时间,让您有机会在它被利用之前修复它。只有一个问题-您能否详细说明CSP Level 2指令是什么以及它们将如何降低风险?您能否更具体地说明“是否有任何恶意JS可以进入这些区域”?这可能是如何发生的?假设您不允许内联脚本或eval,CDN(例如托管jquery)妥协就是一个例子。子资源完整性有助于缓解这种威胁。答案很好。我同意-我倾向于将CSP视为一个安全网。XSS的真正防御措施是正确的输出编码,然而,如果编码例程中遗漏了一个输出,那么健壮的CSP可以节省您的时间,让您有机会在它被利用之前修复它。只有一个问题-您能否详细说明CSP 2级指令是什么,以及它们将如何降低风险?