是否包含所有这些第三方JavaScript文件会带来安全风险?

coo*_*eze 4 javascript security pci-compliance stripe-payments

如果您在页面上包含所有这些各种javascript文件,包括网站分析,点击跟踪等各种服务,这是否会产生巨大的安全风险,因为使用javascript他们可以劫持在表单上输入的人员信用卡?

目前这甚至被认为是安全的?

这意味着,您的服务器是安全的,您的支付提供商是安全的,您拥有SSL,但如果有人要破解人们使用的任何这些服务(我看到许多网站使用超过10种服务来跟踪点击,广告相关等),那么它们可以包含您的付款表单.

Sil*_*Fox 5

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

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

你是对的.最近,PageFair遭到了入侵,将其提供分析服务的每个网站都打倒了.您应该验证您为脚本引用的所有第三方域,并确保您信任它们.例如,你可能对谷歌和Facebook这样的大家伙都没问题,但是你应该考虑放弃它们或者查看脚本代码然后在你的域上本地托管.

您可以通过子资源完整性缓解此问题:

<script src="https://example.com/example-framework.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
        crossorigin="anonymous"></script>
Run Code Online (Sandbox Code Playgroud)

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


The*_*tor -1

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

主机可以通过两种主要方法解决此问题并使 JavaScript 下载对用户来说更加可靠:

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

  • 我担心的不是特定的提供商,但我只是有点震惊,处理安全信用卡信息的网站通常安装了大量的第三方跟踪器。我不明白 PCI 合规流程如何能够忽略这个安全问题。 (2认同)