Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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 XSS-内容安全策略_Javascript_Security_Xss_Content Security Policy - Fatal编程技术网

Javascript XSS-内容安全策略

Javascript XSS-内容安全策略,javascript,security,xss,content-security-policy,Javascript,Security,Xss,Content Security Policy,通过将内容安全策略设置为默认的src“self”,可以100%防止XSS吗?在这种情况下,XSS会发生吗?我能想到的一种可能性是在服务器端将用户输入动态地注入到脚本中,您同意吗?是否还有其他您可以想到的漏洞?CSP不应被用作防止XSS攻击的唯一方法。这种机制只适用于客户端(如果您将恶意数据保存到数据库中,那么您可能会开始感染与之集成的其他系统),并且并非所有浏览器都能实现() 为了防止XSS,您应该始终验证输入数据并对输出数据进行编码。您还可以在JavaScript控制台中打印警告消息,以防止某

通过将内容安全策略设置为默认的src“self”,可以100%防止XSS吗?在这种情况下,XSS会发生吗?我能想到的一种可能性是在服务器端将用户输入动态地注入到脚本中,您同意吗?是否还有其他您可以想到的漏洞?

CSP不应被用作防止XSS攻击的唯一方法。这种机制只适用于客户端(如果您将恶意数据保存到数据库中,那么您可能会开始感染与之集成的其他系统),并且并非所有浏览器都能实现()

为了防止XSS,您应该始终验证输入数据并对输出数据进行编码。您还可以在JavaScript控制台中打印警告消息,以防止某种自我XSS攻击(例如,打开facebook页面并打开Chrome开发者工具-查看控制台中的消息)

请记住,网站上的用户输入并不是XSS的唯一来源。恶意数据也可能来自:

  • 从文件导入数据
  • 从第三方系统导入数据
  • 从旧系统迁移数据
  • Cookie和http头

  • 如果您有适当的数据验证和编码(服务器端),那么您可以另外应用浏览器机制,如:CSP、X-XSS-Protection或X-Content-Type-Options,以增加您对系统安全性的信心。

    不,CSP不是一个灵丹妙药。它应该是一道防线,而不是整个防线。如果配置正确,它会有所帮助

    • 在有效负载(无论是持久负载还是反射负载)必须很小的情况下,防止使用XSS,因此通常只会创建一个脚本元素并注入外部代码
    • 避免将数据提取和滥用作为攻击其他站点的平台。根据应用程序的工作方式,对后端服务的访问可能足以提取数据,例如,如果用户可以写博客帖子,攻击者可以使用需要提取的数据创建新帖子,等待数据被抓取的信号(例如通过评论),然后再次删除帖子,所有这些都不需要与外部服务器通信

    回答这个问题,是的,带有默认src'self'的现代浏览器仍然可以执行用户控制的javascript:
    JSONP

    特别值得注意的是,我们的源代码列表中缺少
    self
    。虽然 从
    self
    获取JavaScript似乎相对安全(而且非常安全) 常见),应尽可能避免

    任何开发人员都必须关注一些边缘案例 允许self作为脚本源时。可能会有一个被遗忘的世界
    JSONP
    未清理回调函数名的端点


    我们在谈论什么样的启发式?如果你设置好规则,就没有太多的解释空间。这几乎是网络的SPF。谢谢你的关注。我更正了我的答案。X-XSS-Protection基于启发式而非CSP。您是否有一个示例,说明尽管默认的src“self”CSP,恶意JS最终如何被浏览器运行?(当然考虑到浏览器支持CSP)我没有JS代码的例子,但是XSS不仅仅是关于JS的。例如,攻击者可以将隐藏字段插入到表单中,并覆盖用户提供的值。您是否有一个示例,说明在默认src“self”CSP的情况下,恶意JS如何最终由浏览器运行?(当然,考虑到浏览器支持CSP),通常注入部分不使用外部资源。持久的XSS只是您的数据库将其他人的JS转储出去,但您仍然是源。反射的XSS通常通过请求参数或请求正文内容注入,同样,您的服务器是为Javascript提供服务的服务器。如果您可以注入
    ,您也可以注入
    警报('XSS!')
    ,其中警报可以由
    邪恶.js的内容替换。上述示例都不会触发给定的
    默认src“self”
    。警报除外。我的观点是,如果你能用src反映一个脚本标记,你可能也能对整个恶意脚本做同样的事情。