相关疑难解决方法(0)

使WebWorkers成为一个安全的环境

为了有一个能够在浏览器中运行任意javascript代码的接口,而没有像典型的妈妈玩笑那么大的安全漏洞,Esailija建议使用Web Workers.它们在半沙盒环境中运行(没有DOM访问并且已经在浏览器中)并且可以被杀死,因此用户无法将它们置于无限循环中.

以下是他提出的例子:http://tuohiniemi.fi/~runeli/petka/workertest.html(打开你的控制台)

jsfiddle(仅限谷歌浏览器)

现在,这似乎是一个很好的解决方案; 然而,它是完整的(或接近完整的)吗?有什么明显缺失的吗?

整个事情(因为它连接到机器人)可以在github上找到:worker,evaluationator

主要:

workercode = "worker.js";

function makeWorkerExecuteSomeCode( code, callback ) {
    var timeout;

    code = code + "";
    var worker = new Worker( workercode );

    worker.addEventListener( "message", function(event) {
        clearTimeout(timeout);
        callback( event.data );
    });

    worker.postMessage({
        code: code
    });

    timeout = window.setTimeout( function() {
        callback( "Maximum execution time exceeded" );
        worker.terminate();
    }, 1000 );
}

makeWorkerExecuteSomeCode( '5 + 5', function(answer){
    console.log( answer ); …
Run Code Online (Sandbox Code Playgroud)

javascript web-worker

66
推荐指数
2
解决办法
3429
查看次数

将eval()限制在狭窄的范围内

我有一个javascript文件,读取另一个文件,其中可能包含需要eval() - ed的javascript片段.脚本片段应该符合javascript的严格子集,这限制了它们可以做什么以及它们可以更改哪些变量,但我想知道是否有某种方法可以通过阻止eval在全局范围内查看变量来强制执行此操作.类似于以下内容:

function safeEval( fragment )
{
    var localVariable = g_Variable;

    {
        // do magic scoping here so that the eval fragment can see localVariable
        // but not g_Variable or anything else outside function scope

        eval( fragment );
    }
}
Run Code Online (Sandbox Code Playgroud)

实际的代码不需要看起来像这样 - 我对任何和所有带闭包的奇怪技巧都是开放的等等.但我确实想知道这是否可能.

javascript eval

31
推荐指数
4
解决办法
2万
查看次数

有没有办法在Javascript中监禁,以便DOM不可见

我真的想为用户提供一些脚本功能,同时不让它访问更强大的功能,比如改变DOM.也就是说,所有输入/输出都通过给定接口进行隧道传输.就像一种受限制的javacsript.

示例:如果checkanswer(func) 允许接口:

checkanswer( function (x,y)={
   return x+y;
}
Run Code Online (Sandbox Code Playgroud)

但这些是不允许的:
alert(1)
document.write("hello world")
eval("alert()")

编辑:我想到的是一个使用javascript实现的简单语言,如http://stevehanov.ca/blog/index.php?id=92

javascript scripting dom restriction

9
推荐指数
2
解决办法
2127
查看次数

标签 统计

javascript ×3

dom ×1

eval ×1

restriction ×1

scripting ×1

web-worker ×1