Javascript 如何使评估功能安全?

Javascript 如何使评估功能安全?,javascript,Javascript,我正在编写一个交互式画布教程。我希望学生能够将JavaScript输入到contenteditable元素中,但我担心这可能会引入漏洞 我考虑过在评估代码之前重新分配危险的对象或方法,然后再重新分配 如何确定危险物品 这是正确的方法吗,还是我应该扫描他们的输入,只允许某些语句?在类似于JS的“VM”中运行他们的JS代码呢?它基本上是一个类似于eval的JS运行时,您可以在其中声明可用的内容。例如,您可以阻止对fs库的访问。在JS“VM”中运行JS代码怎么样?它基本上是一个类似于eval的JS运行

我正在编写一个交互式画布教程。我希望学生能够将JavaScript输入到contenteditable元素中,但我担心这可能会引入漏洞

我考虑过在评估代码之前重新分配危险的对象或方法,然后再重新分配

如何确定危险物品


这是正确的方法吗,还是我应该扫描他们的输入,只允许某些语句?

在类似于JS的“VM”中运行他们的JS代码呢?它基本上是一个类似于eval的JS运行时,您可以在其中声明可用的内容。例如,您可以阻止对fs库的访问。

在JS“VM”中运行JS代码怎么样?它基本上是一个类似于eval的JS运行时,您可以在其中声明可用的内容。例如,您可以阻止对fs库的访问。

提供一堆玩具笔,学生可以用它们进行叉接和编辑,怎么样


这就解决了安全问题。

提供一堆玩具笔,学生们可以用它叉起来编辑,怎么样


这就解决了安全问题。

在不了解细节的情况下,很难给出一般性建议,但您可能希望研究将可编辑内容放入沙盒iframe中

<iframe sandbox="allow-scripts"></iframe>


您需要测试库所支持的支持。还可能需要设置适当的标题,具体取决于您如何实现此功能。

在不了解详细信息的情况下,很难给出一般性建议,但您可能希望研究将可编辑内容放入沙盒iframe中

<iframe sandbox="allow-scripts"></iframe>


您需要测试库所支持的支持。根据您的实现方式,可能还需要设置适当的标题。

一本好书:虽然这个问题很有趣,但它已经被问了很多次,当谷歌搜索几篇文章的确切标题时,就会显示文章,第三方API能够安全地使用eval。您是否从一个页面运行这些javascript代码学生在其他电脑上?或者每个学生都使用自己的副本?你认为什么是易受攻击的?你的威胁模型是什么,你需要保护哪些东西?关于JS中的一切都是危险的。黑名单是逃不掉的。值得一读的是:虽然这个问题很有趣,但它已经被问了很多次,当谷歌搜索几篇文章的确切标题时,就会显示帖子,第三方API能够安全地使用eval。你在其他个人电脑上运行一个学生的javascript代码吗?或者每个学生都使用自己的副本?你认为什么是易受攻击的?你的威胁模型是什么,你需要保护哪些东西?关于JS中的一切都是危险的。黑名单是逃不掉的。这听起来是个好主意。我不知道这个功能。我会测试一下。如果我理解正确的话,使它安全的原因是它有一个唯一的来源,所以基本上它被视为来自另一个来源的脚本。@PalleCogburn是的。这就好像iframe的内容是在一个独立的域上。这听起来是个好主意。我不知道这个功能。我会测试一下。如果我理解正确的话,使它安全的原因是它有一个唯一的来源,所以基本上它被视为来自另一个来源的脚本。@PalleCogburn是的。这就好像iframe的内容在一个域中,完全是它自己的。