【问题标题】:Does including all these 3rd party javascript files impose a security risk?包含所有这些 3rd 方 javascript 文件是否会带来安全风险?
【发布时间】:2018-08-03 05:01:54
【问题描述】:

当您将所有这些各种 javascript 文件包含在用于各种服务(如网站分析、点击跟踪等)的页面上时,这不会造成巨大的安全风险,因为使用 javascript 他们可以劫持输入的个人信用卡表格?

目前如何认为这是安全的?

意思是,您的服务器是安全的,您的支付提供商是安全的,您有 SSL,但如果有人入侵了人们使用的任何这些服务(我看到许多网站使用 10 多种服务来跟踪点击、广告相关、等)然后它们可以构成您的付款表格。

【问题讨论】:

    标签: javascript security stripe-payments pci-compliance


    【解决方案1】:

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

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

    你的担心是对的。 PageFair was recently compromised 关闭了它提供分析服务的每个站点。您应该验证您为脚本引用的所有第三方域,并确保您信任它们。例如,您可能对 Google 和 Facebook 等大公司没问题,但是您应该考虑放弃它们或查看脚本代码,然后在您的域上本地托管。

    您可以使用subresource integrity 缓解这种情况:

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

    这将要求浏览器检查加载的脚本是否具有指定的加密哈希。对脚本的任何更改,即使是单个字符,都会产生完全不同的哈希值,从而可以检测到任何更改,并且脚本将被拒绝加载和运行。截至 2018 年 8 月,all major browsers support it except for IE and iOS Safari.

    【讨论】:

    • 是的,可能会运行一个后台服务来扫描脚本中的更改,然后提醒这个机会。话又说回来,脚本都被最小化了,所以尝试弄清楚它很有趣!
    【解决方案2】:

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

    主机可以通过两种主要方式解决此问题并使其 JavaScript 下载对用户而言更加可靠:

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

    【讨论】:

    • 是的,但如果其中一项服务被黑客入侵,并且有人编写 javascript 以在表单上滑动私人信息。这就是我的观点。而那些其他服务不会那么安全,因为它们是从事点击跟踪或其他工作的初创公司。
    • 所以您在这里所说的是您担心javascript 服务器 本身被黑客入侵,例如点击跟踪器。在这种情况下,您只需将所有脚本文件复制到您的服务器,这样任何试图针对您的人都只有一个端点——您的服务器。如果您联系的服务被黑客入侵,它几乎不会造成太大的损害。出于好奇,您认为哪个特定网站存在此问题?
    • 我关心的不是特定的提供商,但我有点震惊的是,处理安全信用卡信息的网站通常安装了大量的第三方跟踪器。我看不出 PCI 合规流程如何忽略这个安全问题。
    • “但是,如果这些大量 JavaScript 下载中的每一个都是通过安全的 HTTPS 连接下载的,那就完全没问题了”只有当您可以 100% 信任第三方时,这才是正确的。这是你永远做不到的,你可以吗
    猜你喜欢
    • 2011-04-23
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    相关资源
    最近更新 更多