作者:十二
链接:https://www.zhihu.com/question/20026752/answer/138913400
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
操作系统层面的沙盒的含义就是操作系统对进程的可访问的内存地址所做的限制,限制进程可访问的内存在其被分配的内存地址区间内,而不允许操作其他的内存地址,从而提供安全层面的防护。 到浏览器层面,本质原理没多大变化,实践层面可能会根据浏览器环境有所变化,比如限制脚本操作本页面之外的其他页面的DOM,限制访问非同源文档,限制向非同源服务器发送ajax等等,目的依然是安全。 以chromium为例。chromium是多进程架构,浏览器前端界面由browser进程管理,各个web page的tab属于renderer进程管理。chromium的sandbox是将renderer进程作为防护对象。browser进程会给每个renderer进程分配资源,但这些renderer进程只能访问被分配的资源,不能访问未被分配的资源。这里资源的概念比较广泛,具体到可访问的DOM(对应内存中的对象),或抽象到origin scope等。实现层面的话,可以类比Linux下文件系统的权限位,浏览器会对每个web page实现对应的权限位,w3c HTML规范里 [Sandbox]( https://www.w3.org/WebPlatform/docs/html51/browsers.html#sandboxing) 有相关内容。
“沙盒”技术与主动防御技术原理截然不同。主动防御是发现程序有可疑行为时立即拦截并终止运行。“沙盒”技术则是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。 如果您还不懂,那说的再简单一些。想象一下,在一个装满了平整细沙的盒子里,我们可以尽情随意地在上面作画、涂写,无论画的好坏,最后轻轻一抹,沙盒又回到了原来的平整状态。沙盒的魅力就在于他允许你出错,还可以给你改正的机会。 参考资料:
作者:春泥村雨
链接:https://www.zhihu.com/question/20026752/answer/13849683
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
|