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这门语言成功地走到了现在。

关于JS 沙箱(转)的更多相关文章

  1. 动手写 js 沙箱

    本文由云+社区发表 作者:ivweb villainthr 市面上现在流行两种沙箱模式,一种是使用iframe,还有一种是直接在页面上使用new Function + eval进行执行. 殊途同归,主 ...

  2. JS高级——沙箱

    基本概念 1.沙箱:与外界隔绝的一个环境,外界无法修改该环境内任何信息,沙箱内的东西单独属于一个世界 2.苹果手的app使用的就是沙箱模式去运行,隔离app的空间,每个app独立运行 js沙箱基本模式 ...

  3. 最近发现了个js传图预览的函数和大家分享下

    由于浏览器js沙箱,存在不同域,js无法直接调用电脑文件.在之前做传图预览的时候,基本的思路就是, 将图片先保存到服务器中缓存,然后返回一个服务器路径,并显示出图片,然而这样很耗缓存目录文件的.方法也 ...

  4. DES加密解密 与 Cookie的封装(C#与js互相加密解密)

    2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)   这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方 ...

  5. A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)

    这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方便: <script src="A2D.js" type=&qu ...

  6. Node.js躬行记(9)——微前端实践

    后台管理系统使用的是umi框架,随着公司业务的发展,目前已经变成了一个巨石应用,越来越难维护,有必要对其进行拆分了. 计划是从市面上挑选一个成熟的微前端框架,首先选择的是 icestark,虽然文档中 ...

  7. qiankun 2.x 运行时沙箱 源码分析

    简介 从源码层面详细讲解了 qiankun 框架中的 JS 沙箱 和 样式沙箱的实现原理. 序言 沙箱 这个词想必大家应该不陌生,即使陌生,读完这篇文章也就不那么陌生了 沙箱 (Sandboxie) ...

  8. 转载 基于Selenium WebDriver的Web应用自动化测试

    转载原地址:  https://www.ibm.com/developerworks/cn/web/1306_chenlei_webdriver/ 对于 Web 应用,软件测试人员在日常的测试工作中, ...

  9. JavaScript模块化开发实例

    最近接触了一些JavaScript开发的例子,在这里与大家一起分享一下: 例子:当我们一个团队在写Js文件的时候,你一个人写的JS代码自己可以看懂也可以维护,但是别人想对你的JS进行扩展的话,如果都在 ...

随机推荐

  1. 如何将App程序发布到App Store?

    见链接:http://my.oschina.net/u/1245365/blog/201920

  2. android activity的启动方式

    1.Standard正常启动,默认的启动方式,没什么说头 2.SingleTop 意思就是在栈顶只能存在一个相同的activity 不能叠加,如果再A上继续启动A的话,只会调用A的onNewInten ...

  3. 2016-12-14:通过static关键字,使用类成员函数作为回调函数

    #include <iostream> using namespace std; class Callee { public: void PrintInfo(int i) { cout & ...

  4. Ninject之旅之十:Ninject自定义提供者

    摘要 提供者是特殊的工厂类,Ninject使用它来实例化解析类型.任何时候我们绑定一个服务类型到一个组件,我们都隐式地关联那个服务类型到一个可以实例化那个组件的提供者.这个隐藏的提供者被称为Stand ...

  5. Appium UI自动化的那些梗

    @作者 彭海波 转载请注明出处 前言 由于需求的快速迭代和敏捷测试的要求,在测试过程中引入自动化成为必不可少的手段.作为一个互联网测试团队,我们自然也引入了自动化测试这个环节.在众多的测试框架中,我们 ...

  6. SQL数据库与excel表格之间的数据 导入 导出

  7. etcd api 接口

    etcd api接口 基本操作api: https://github.com/coreos/etcd/blob/6acb3d67fbe131b3b2d5d010e00ec80182be4628/Doc ...

  8. 利用循环播放dataurl的视频来防止锁屏:NoSleep.js

    mark下. 地址:http://www.open-open.com/lib/view/open1430796889882.html

  9. phoenix将hdfs数据导入hbase

    http://phoenix.apache.org/bulk_dataload.html

  10. python 字符编码 转换

    #!/bin/env python#-*- encoding=utf8 -*-# 文件头指定utf8编码还是乱码时,使用下面方式指定# fix encoding problem import sys ...