【问题标题】:What is the best way to secure a javascript environment?保护 javascript 环境的最佳方法是什么?
【发布时间】:2013-06-10 22:18:49
【问题描述】:

我正在开发一个 HTML5 游戏,作为其中一项功能,我希望更高级的用户能够用 JavaScript 编写简短的脚本,这些脚本可以由游戏中的对象运行。问题是我想限制玩家脚本可以做什么,这样他们就不能打开新窗口、作弊、修改游戏的性质等。但是,我想向脚本公开某些方法,所以他们可以做出有用的东西。

一些人建议我可以使用 Web Workers 来完成这项工作。其他人告诉我,我需要在 javascript 中构建一个解释器来做到这一点。显然,我不能只使用 eval,那么如果有“最佳”方法,我该怎么做?最好的方法是什么?

【问题讨论】:

  • 也许你觉得这有帮助:Make sandbox around Function() in Javascript.
  • 谁来运行这些脚本:只有一个用户还是多个用户?
  • dandavis,某些玩家群体可以运行某些脚本。我希望这一切都可以互操作。
  • 菲利克斯,完美。这正是我所需要的。

标签: javascript html security environment emulation


【解决方案1】:

您不需要创建沙箱,Javascript 已经为您完成了。

如果您在页面内创建 iframe,该 iframe 将拥有独立于原始页面的自己的 javascript 环境。然后就可以使用html5帧间通信来回发送消息了。 iframe 将运行用户定义的程序并将其答案发送回主机以进行评估。您不应该相信从 iframe 返回的内容并丢弃任何超出范围的内容。

【讨论】:

    猜你喜欢
    • 2020-09-26
    • 2021-04-10
    • 2011-01-17
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2019-05-11
    • 2015-07-28
    • 2014-07-05
    相关资源
    最近更新 更多