javascript中的沙箱并不是传统意义上的沙箱,只是一种语法上的hack写法而已,javascript中处理模块依赖关系的闭包被称之为沙箱,和 ajax同样,这种sandbox coding风格是一种现象,而不是本质,自己并没有对错之分,要看你怎么用,所以,理解并合理运用才是咱们对“js沙箱”的一个正确的基本态度,“沙箱无用论”是很业余的观点。
——沙箱是一个工具。就和键盘和鼠标同样,咱们须要他,但更要看咱们怎么用他。
目前来看,js沙箱的优点在于代码的组织并向“应用”提供架构支持,js沙箱解决不了全局变量污染,多版本库的融合等基本问题,不少人对js沙箱抱有过高奢望,也是不对的。
—— 沙箱是一把利器。就像AK是巷战之王,可仍是有人硬要拿它打飞机。
js沙箱已经开始影响B端开发,并且在先后端融合方面具备更多前瞻性的优点。
——沙箱是一把钥匙。ajax的流行改变了B端开发模式,咱们有理由期待js沙箱在企业级开发中的表现。
当JavaScript第一次发布的时候,有一个能够理解的忧虑,那就是打开一个页面可能会直接在机器上执行一段代码。若是JavaScript中含有一些有害的代码,好比删除全部Word文档,或者更糟的是,向脚本的编写者复制这些Word文档,那该怎么办呢?
为了防止这种状况发生,同时也为了让浏览器的用户放心,JavaScript构建为只在沙箱中运行。沙箱是一个受保护的环境,在这个环境中,脚本不能访问浏览器所在的计算机资源。
另外,浏览器所实现的安全条件高出并超过了JavaScript语言所创建的最低条件。这些都定义在一个与浏览器相关的安全策略中,它决定了脚本能作什么不能作什么。例如,一个这样的安全策略规定脚本不能与脚本所来源的域之外的页面通讯。大多数浏览器还提供了定制这一策略的方式,这可使脚本所运行的环境限制变得更严或更松。
不幸的是,即使是有了JavaScript沙箱和浏览器安全策略,JavaScript仍是通过了一段难熬的时光,黑客已经发现并充分利用了JavaScript的一些错误,有些错误与浏览器无关,有些错误与浏览器有关。较严重的一个是跨站脚本(cross-site scripting,XSS)。这其实是一类安全破坏(其中一些经过JavaScript,另外一些经过浏览器的漏洞,还有一些经过服务器),它可以致使 cookie dao qie、暴露客户端或网站的数据,或致使许多其余的严重问题。
从语言学的角度上来讲,容许代码无节制地使用全局变量,是最错误的选择之一。而更可怕的,就是一个变量"可能"成为全局的(在未知的时间与地点)。可是这两项,却伴随JavaScript这门语言成功地走到了如今。javascript