相关疑难解决方法(0)

是否可以在浏览器中运行沙盒JavaScript?

我想知道是否可以在浏览器中运行JavaScript沙箱,以防止访问HTML页面中运行的JavaScript代码通常可用的功能.

例如,假设我想为最终用户提供一个JavaScript API,让他们定义在"有趣事件"发生时运行的事件处理程序,但我不希望这些用户访问该window对象的属性和功能.我能做到吗?

在最简单的情况下,假设我想阻止用户呼叫alert.我能想到的几种方法是:

  • window.alert全球重新定义.我不认为这是一种有效的方法,因为在页面中运行的其他代码(即用户在其事件处理程序中未编写的内容)可能想要使用alert.
  • 将事件处理程序代码发送到要处理的服务器.我不确定将代码发送到服务器进行处理是正确的方法,因为事件处理程序需要在页面的上下文中运行.

也许服务器处理用户定义的函数然后生成要在客户端上执行的回调的解决方案可行吗?即使这种方法有效,是否有更好的方法来解决这个问题?

javascript browser sandbox

136
推荐指数
8
解决办法
4万
查看次数

如何安全地"评估"网页中的用户代码?

我正在开发一个webapp来教授编程概念.网页上有一些关于编程概念的文本,然后让用户在javascript代码中键入文本编辑器窗口以尝试回答编程问题.当用户点击"提交"时,我会分析他们输入的文本以查看他们是否已解决问题.例如,我要求他们"编写一个命名f为其参数添加三个的函数".

以下是我正在分析用户文本的内容:

  1. 使用严格设置在文本上运行JSLint,特别是不使用浏览器或控制台功能.
  2. 如果有任何错误,请显示错误并停止.
  3. eval(usertext);
  4. 循环通过赋值的条件,eval(condition).一个例子是"f(1)===4".条件来自可靠来源.
  5. 显示通过/失败的条件.

我的问题:这是否足以防止安全问题?我还能做些什么才能成为偏执狂?有没有更好的方法来做我想要的?

如果它是相关的我的应用程序是在使用Python后端的Google App Engine上,使用JQuery,具有单独的用户帐户.

javascript security eval jslint

11
推荐指数
1
解决办法
2635
查看次数

在浏览器中编写javascript时限制副作用

使用javascript在浏览器中编程时限制副作用非常棘手.

我可以做一些事情,比如不要访问成员变量,就像这个愚蠢的例子:

let number = 0;

const inc = (n) => {
  number = number + n;

  return number;
};

console.log(inc(1));  //=> 1
console.log(inc(1));  //=> 2
Run Code Online (Sandbox Code Playgroud)

但是我可以做些什么来减少我的javascript中的副作用?

javascript functional-programming

11
推荐指数
1
解决办法
483
查看次数