Google Native Client是如何沙盒化的?本机应用程序还是Native Client?

时间:2015-06-29 10:46:44

标签: google-chrome-extension sandbox google-nativeclient

我是编写Chrome扩展程序和NaCl的初学者。我有一个用C#编写的应用程序的基本扩展。

使用C#应用程序(由我的Chrome扩展程序调用),我可以自由地从/向我的Windows文件系统读取/写入文件。我也可以在客户机上启动已安装的应用程序。这是如何沙箱,因为我可以访问整个文件系统?我的C#应用​​程序是否称为Native Client? 不确定,也许我误解了Sandboxing。

还有一条评论:我可以从here看到我的C#应用​​程序被称为"本机应用程序"。我猜我把它与#34; Native Client"混淆了。如果是这样,任何人都可以解释这两者之间的差异。

感谢您的评论。

1 个答案:

答案 0 :(得分:4)

您将Native Client(这是一个单独的语言/编译器,其结果正在沙箱中执行)与Native Messaging Host(显式沙盒)混淆。

扩展程序可以同时使用:它可以使用(但不能捆绑)本机主机,并且可以include NaCl/PNaCl modules

通过限制语言允许的内容并使用静态分析确保代码安全来回答这个名称问题,代码是沙盒化的:

  

由于Native Client允许在客户端计算机上执行本机代码,因此必须实施特殊的安全措施:

     
      
  • NaCl沙箱确保代码仅通过安全的白名单API访问系统资源,并在其限制范围内运行,而不会干扰在浏览器内或外部运行的其他代码。
  •   
  • NaCl验证程序在运行代码之前对代码进行静态分析,以确保它只使用允许且安全的代码和数据模式。
  •   
     

这些安全措施是Chrome浏览器中现有沙箱的补充。 Native Client模块始终在具有受限权限的进程中执行。此进程与外部世界之间唯一的交互是通过定义的浏览器界面。由于NaCl沙箱和Chrome沙箱的结合,我们说Native Client采用双沙盒设计。

例如,您将无法直接访问文件系统,因为标准文件I / O不可用;相反,沙箱提供了受限制的版本。

"Native"这里只是一个含糊不清的术语,就像“应用程序”一样(比较:Chrome App也是一个东西)。

Native Messaging =使用“本机”(即在浏览器之外)应用程序进行消息传递。

Native Client是执行"native code"的技术的正确名称(而不是浏览器对解释的脚本)。

Native Messaging明显与NaCl平台无关。