【问题标题】:General server-side use of V8: IsolatesV8 的一般服务器端使用:隔离
【发布时间】:2018-12-19 12:25:49
【问题描述】:

Google 的开源 V8 引擎是成熟的高性能 JIT 编译器。

主要在 C++ 中实现,充当以 JS 为中心的执行运行时。

它有一个 isolation 实现 (V8: Isolates),在单个进程中提供隔离粒度。

引出两部分问题。

(通用) 此功能是否可以广泛用于跨服务器端 Web 应用程序引擎(例如 nginx、apache)和编程语言的隔离?

(更具体的->)

我对 V8 的理解是它是为 JS 脚本语言设计的(尽管它直接编译为机器代码)。 想要对源代码使用一种编程语言——比如 Haskell、C++/C——然后往往在两者之间仍然有 JS 接口。 是否有很多直接的方式来生成机器代码,同时仍然使用V8: Isolates

【问题讨论】:

    标签: programming-languages v8 embedded-v8 javascript-engine


    【解决方案1】:

    V8 是一个 JavaScript(以及最新版本的 WebAssembly)引擎,因此不能用于编译或执行任何其他语言。

    如果您有 C++ 代码,则需要使用 C++ 编译器为其生成可执行的机器代码。 Haskell 代码需要 Haskell 编译器。

    根据您的要求,您可能会对 WebAssembly 感兴趣:它是 C++ 等语言的可移植编译目标,比 JavaScript 更适合此目的。

    这应该回答您的“更具体”和“一般”问题。

    请注意,V8 的 Isolates 中并没有真正可以用于其他目的的魔法;该术语主要描述了在同一进程中拥有多个独立 V8 实例的能力。如果您从头开始自己的项目(无论其目的是什么),这很容易实现,您只需要保持一点编码纪律;对于现有的代码库,它需要重构所有全局状态(静态变量等)。

    另外,请注意,今年全世界已经了解到,从安全的角度来看,确实不存在进程内隔离这样的事情。如果您有严格的安全要求,那么至少您必须为不同的安全域运行单独的进程。 (需要明确的是,V8 的隔离不提供对侧信道攻击的保护。)

    【讨论】:

    • > world 今年已经了解到,从安全的角度来看,确实没有进程内隔离这样的东西。 \n你能指出你似乎指的是一个特定的事件吗?
    • “幽灵”类侧信道攻击。
    • 是否有受影响的隔离解决方案?
    • 我相信,只要关闭超线程,目前假定单独的进程可以有效地相互隔离。
    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 2022-06-26
    • 2016-04-28
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多