首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法用沙箱保存一些javascript,使其不能以任何方式将数据发送到服务器?

有没有办法用沙箱保存一些javascript,使其不能以任何方式将数据发送到服务器?
EN

Stack Overflow用户
提问于 2013-11-14 09:27:31
回答 1查看 225关注 0票数 0

这样做的目的是运行一些用户创建的JavaScript,它处理不应该脱离沙箱的敏感数据。我在这里的目的不仅是对正在运行的脚本进行沙箱化,而且还要对它正在处理的数据进行沙箱化。

我可以设置子域或web工作者,并使用sendMessage运行脚本并将结果发回给父域。我可以在iframe上使用新的html5沙箱标志。所有这三种方法都可以用于将脚本与父域隔离开来,但我无法找到锁定脚本的方法,以便它不能将数据发送到服务器。

例如,运行在worker上的脚本可以与接受跨域请求的服务器一起使用ajax请求将数据从沙箱中分离出来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-14 10:06:27

您不能切断脚本的任何本地传输。

例如,工作者只能访问一个本机传输XMLHttpRequest(因为没有对文档->的访问-没有带有src、链接、窗体的节点),而且您可以重新定义它--即window.XMLHttpRequest = function () {return 1}和脚本不能将数据发送到服务器。

但是只要运行delete window.XMLHttpRequest,您就可以设置本地XMLHttpRequest。它工作良好,并在严格的模式(ECMAScript-262编辑。5/6)

(function () {

'use strict';

window.XMLHttpRequest = function () {return 1};

console.log(window.XMLHttpRequest);

delete window.XMLHttpRequest;

console.log(window.XMLHttpRequest);

})()

关于HTML5,iframe选项。如果您使用sandbox="allow-scripts allow-same-origin allow-pointer-lock",来自iframe的任何脚本都不能发送跨域请求(XMLHttpRequest、postMessage、WebSocket、WebRTC、服务器发送的Events...any)。如果您需要拒绝跨域请求--就是这样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19973894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档