相关疑难解决方法(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
查看次数

Web工作者是否增加(或减少)安全性?

网络工作者是否减轻或加剧了JavaScript和浏览器环境中的任何已知安全问题?

javascript security browser-security web-worker

6
推荐指数
1
解决办法
738
查看次数

工人是否可以足够安全地使用不受信任的代码

我有一个用户提交的不受信任的代码,我需要在浏览器的沙盒环境中执行它。

有人告诉我,Web-Workers不能为此提供足够的安全性,因此最好使用Sandbxed iframe。这一页:

https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Web_Workers

还说工人不适合不受信任的代码。

但是,如果我从Blob创建一个worker,则其url甚至具有不同的协议(blob://)。在这种情况下,是否将单独的来源策略应用于工作者代码?

如果还有其他原因,为什么(默认情况下)为什么与沙盒iframe(访问IndexedDB等)相比,对工作人员的限制较少(是否有机会以某种方式设置工作人员,以便对其进行足够的限制,或者应该我还是要使用沙盒iframe吗?

javascript security iframe sandbox

3
推荐指数
1
解决办法
1244
查看次数