代码之家  ›  专栏  ›  技术社区  ›  Danny Gersh

让网站成员上传js供其他成员使用有什么危险?

  •  0
  • Danny Gersh  · 技术社区  · 2 年前

    例如 CodePen Khan Academy programming projects . 他们允许用户上传将在其他计算机上运行的js脚本,codepen甚至允许具有pro帐户的用户使用第三个库。我想在我的网站上做同样的事情,这有多危险?如何将风险降至最低?

    1 回复  |  直到 2 年前
        1
  •  0
  •   CertainPerformance    2 年前

    相对来说比较安全 如果 您实现了适当的沙箱。

    你要避免的一件事是让用户代码在其他用户浏览器的顶层运行,因为如果你允许,其他用户在网站上的所有数据都可能被检索、记录和窃取。但是,如果您确保用户代码不是在顶层运行,而是在沙盒iframe(无法使顶部窗口运行任何内容的iframe)中运行,可能就没问题了。

    看见 this question 对元堆栈溢出问题进行了类似的讨论。您提到的站点,以及其他实现来自用户的实时代码编辑器的站点,如Stack Overflow和JSFIDLE等,都使用这种在沙盒iframe中运行用户代码的技术,因此运行的代码无法到达顶层窗口,其数据必须保持安全。iframe还应该使用与父站点不同的源站(如果有的话)——现代浏览器自然对跨站点通信实施了相当严格的限制,正是出于这种原因(因此,来自一个源站的iframe对另一个源站的父窗口所做的作用很小,除非父窗口专门设置了这样的东西)。

    我说沙盒iframe是 漂亮的 安全但不安全 绝对地 安全,因为 it's not impossible that something like Spectre 最终可能会在前端JavaScript中被利用,从而进行真正有成效的恶意操作。我认为它还没有在野外被看到过,而且可能永远不会,但这并非不可能。