包括所有这些第三方javascript文件是否会带来安全风险

Does including all these 3rd party javascript files impose a security risk?

本文关键字:安全 是否 所有这些 第三方 javascript 文件 包括      更新时间:2023-09-26

当你在一个页面上包含了各种各样的javascript文件,用于各种服务,如网站分析、点击跟踪等时,这不是会产生巨大的安全风险吗?因为使用javascript,他们可以劫持表单上输入的个人信用卡?

目前这怎么被认为是安全的?

这意味着,你的服务器是安全的,你的支付提供商是安全的。你有SSL,但如果有人侵入了人们使用的任何这些服务(我看到许多网站使用超过10种服务来跟踪点击、广告相关等),那么他们可以组成你的支付表单。

是的,这是一个安全风险,称为第三方脚本包含。

通过在由第三方托管的页面上包含脚本,您相信外部域既没有恶意,也没有被破坏。通过使用<script src="//example.com">标记,第三方域可以完全控制您网站上的DOM。他们可以注入他们想要的任何JavaScript。

你担心是对的。PageFair最近受到威胁,关闭了它提供分析服务的每个网站。你应该验证你为脚本引用的所有第三方域,并确保你信任它们。例如,你可能对谷歌(Google)和脸书(Facebook)等大公司没意见,但其他公司你应该考虑放弃它们,或者查看脚本代码,然后在你的域上本地托管。

您可以通过子资源完整性来缓解这种情况:

<script src="https://example.com/example-framework.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
        crossorigin="anonymous"></script>

这将要求浏览器检查加载的脚本是否具有指定的加密哈希。对脚本的任何更改,即使只有一个字符,也会产生一个完全不同的哈希,从而可以检测到任何更改,并且脚本将被拒绝加载和运行。截至2018年8月,除IE和iOS Safari外,所有主要浏览器都支持它。

编辑:正如我在评论中指出的那样,您无法通过HTTPS下载所有资源来解决所有JavaScript安全问题,正如我在本答案的前一版本中所断言的那样。相反,这只是将问题简化为最终用户可以在多大程度上安全地信任JavaScript本身的提供商——如果服务受到威胁或是一个积极的恶意组织,他们就不能。

主机可以通过两种主要方法来解决这个问题,并使其JavaScript下载对用户更可靠:

  1. 如果没有意义,就不要包含JavaScript组件。例如,你会在Amazon.com上注意到的一件事是,虽然正常的购物页面都有标题栏,充满了额外的信息和广告等等,但你输入付款信息的实际结账页面几乎是空白的——大多数样式和脚本都不包括在内,页面上肯定没有广告
  2. 如果您需要该组件,但可以自己托管脚本,请这样做。这样,除非您自己受到威胁,否则您可以确信用户下载的任何脚本都不是,因为您正在提供它。对于不主动与其他服务通信的脱机脚本,出于兼容性原因,通常都需要这样做,并且许多在线脚本也可以包含在这里,而不会有太多功能损失