我在iframe中执行用户提供的javascript代码。所执行的代码可能是由其他用户提交的,因此需要尽可能对其进行沙箱处理。 iframe上的sandbox属性非常有用,就像使用Content-Security-Policy一样。
但是,我仍然需要一种方法来防止恶意代码冻结网站。
我看到了两种可能性,但不知道如何使它们起作用:
1:iframe中的所有代码都在专用于该iframe的Worker中运行。不幸的是,必须允许iframe中的代码更改iframe中包含的html。通过对其进行修改,使其加载另一个脚本,代码可以有效地脱离工作程序。
2:该代码确实在主线程中运行,但是有一个Worker正在监视该页面。该工作人员可以以某种方式知道由于iframe导致网站何时冻结,然后仅杀死有问题的脚本。