📜  沙盒安全模型

📅  最后修改于: 2022-05-13 01:56:28.633000             🧑  作者: Mango

沙盒安全模型

在计算机安全中,沙箱是一种用于分离正在运行的程序的安全机制,通常是为了最大限度地减少系统故障或软件漏洞的传播。一般来说,沙箱是一个隔离的计算环境,可以在其中执行程序或文件而不影响其运行的应用程序。软件开发人员使用沙箱来测试新的编程代码。

  • 沙盒通常为来宾程序运行提供严格控制的资源集,例如有限的磁盘和内存空间。
  • 在Java编程语言中,沙盒是程序区域,它有一些规则,程序员在创建作为页面一部分发送的Java代码(如小程序)时需要遵循这些规则。
  • 由于Java小程序是作为页面的一部分自动发送的,并且可以在它到达时立即执行,因此小程序很容易造成伤害,无论是意外还是有意
  • 沙盒限制对小程序可以请求或访问的系统资源提供了严格的限制。程序员必须编写仅在沙盒内“玩”的代码,例如允许儿童在一个地方的有限范围内玩。沙盒可以被认为是您计算机中的一个小区域,applet 的代码可以在其中自由播放——但不允许在其他任何地方播放。

Java中的安全性

  • Java平台提供的原始安全模型被称为沙盒模型,它的存在是为了提供一个非常有限的环境来运行从开放网络获得的不受信任的代码。
  • 沙盒模型的本质是,本地代码受信任,可以完全访问重要的系统资源(例如文件系统),而下载的远程代码(小程序)不受信任,只能访问沙盒内提供的有限资源。

  • 沙盒模型是通过Java开发工具包 (JDK) 部署的,并且通常被使用 JDK 1.0 构建的应用程序采用,包括支持 Java 的 Web 浏览器。
  • 通过多种机制提供整体安全性。该语言被设计为类型安全且易于使用,即希望程序员的负担与使用其他编程语言相比,出错的可能性较小,例如作为 C 或 C++。诸如自动内存管理、垃圾收集以及对字符串和数组的范围检查等语言特性是该语言如何帮助程序员编写安全代码的示例。
  • 其次,编译器和字节码验证器确保只执行合法的Java字节码。字节码验证器与Java虚拟机一起保证了运行时的语言安全。
  • 类加载器定义了一个本地名称空间,可用于确保不受信任的小程序不会干扰其他程序的运行。
  • 最后,对关键系统资源的访问由Java虚拟机调解,并由 SecurityManager 类预先检查,该类将一段不受信任的代码的操作限制在最低限度。 (沙盒)

用法

沙盒经常用于测试可能包含病毒或其他恶意代码的未经验证的程序,而不允许软件损害主机设备。

实现

  • 在编程竞赛中测试程序的在线评委系统。
  • 新一代的 pastebins 允许用户在 pastebin 的服务器上执行粘贴的代码片段。
  • HTML5 有一个用于 iframe 的“沙盒”属性。
  • 安全计算模式(seccomp)是一个内置在 Linux 内核中的沙箱。激活后,seccomp 只允许 write()、read()、exit() 和 sigreturn() 系统调用。