是否可以在Web worker中安全地使用eval来执行任意用户代码?

时间:2012-08-04 18:07:08

标签: javascript eval web-worker

是否可以卸载以安全方式传唤给Web Worker的自定义用户代码?

与Web Workers的字符串功能“唯一通信”看起来很有前景,但是以有趣的方式评估用户代码几乎总是危险的。

我在网上找不到很多关于它的信息。是否有一个很好的方法来做客户端或某些服务器端清理或其他什么?

2 个答案:

答案 0 :(得分:3)

Web worker无法更改DOM,因此无法以这种方式创建新元素并创建XSS攻击。但是,他们可以创建XMLHttpRequests,因此他们可以从遵循同源策略的任何内容访问和请求数据。

只要您对来自工作人员的消息进行消毒,您就应该是安全的。只需允许特定的字符串,对象或整数,并阻止其他类型的消息。

此外,如果Web Workers仅为每个用户而不是在用户之间分发,他们将不允许您的用户做任何他们不能使用开发人员控制台做的事情。

另见:

答案 1 :(得分:2)

这取决于两个因素:

  • 哪位用户创建了代码?无论如何,每个用户都可以在他自己的浏览器中执行自定义代码,但不能阻止他们。您可以“授予”当前用户输入的代码“完全权限”。

    如果代码是由其他可能是恶意用户创建的,则需要注意。 WebWorkers可以执行Ajax请求,由于凭据,这可能是一个可能的安全漏洞。任何无限的循环和co都永远不会很好。

  • 您的GUI与WebWorker通信,并响应来自它的事件。 WebWorkers消息可以对您的应用程序造成多大的伤害?您需要限制它。