西西河

主题:【原创】浏览器是怎么变成操作系统的 -- 美人他爹

共:💬233 🌺560
全看分页树展 · 主题 跟帖
家园 Chrome Sandbox的点点滴滴

sandbox(沙箱)是一个被当今软件界用滥的一个名词。凡是和安全挨边的产品,sandbox几乎就成了个形容词。

比如,AJAX就称作使用了sandbox技术。它是这样描述自己的sandbox的:javascript仅可以操作当前页面的DOM TREE,javascript对网络的访问(XMLHttpRequest)仅限于当前页面的同一域名 --- 避免CSS攻击(或叫XSS攻击)。

因此,sandbox的核心含义就是行为进行严格的约束并给这种行为划定清楚的界限。IE系列(不包括IE8)安全隐患的最大问题就是他的扩展技术ACTIVEX是个“全能冠军”,即没有它不能接触(处理)的东西,或者说没有沙箱化。

CHROME的沙箱由下列进程限制构成(针对Windows):

1.最低级别的RENDER进程。比如,该进程不可以创建子进程,不可以“调试”现有进程。

2.除了线程,进程内存,IPC管道,进程共享内存,RENDER进程的文件,网络访问均通过父进程(BROWSER)代理。RENDER进程甚至没有通常意义上的WINDOW句柄。RENDER ENGINE就是拿着一块内存在那里画阿画阿,画完了之后通知老大(BROWSER 进程),然后老大就把这块内存的东西(就是一个BMP图像)拷贝到TAB中。

3.RENDER进程使用独立的DESKTOP,因此windows API的调用受到了很多限制,钩子(Windows hook),clipboard这样的东西想都别想。

4.插件可以用独立的进程运行,也可以在RENDER进程运行。但是自己访问网络,采用WINDOW句柄画图的插件还是在自己的进程里面玩吧。这也是CHROME起劲地鼓捣新HTML 5的原因之一,比如HTML 5 VIDEO。CHROME的一个思路就是插件也要按沙箱的思路重新设计。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河