- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了学习node.js,我正在编写一个网站,允许用户玩在线游戏Mafia。对于那些不熟悉 Mafia 的人来说,这是论坛上最常玩的游戏,让不知情的大多数(“城镇”)与知情的少数(“Mafia”)对抗。然而,尽管这是一个准确的简要概述,但实际上每个游戏 session 都可以表现出广泛不同的内部规则,这些规则可以极大地改变游戏机制。
我希望我的网站能够处理所有这些变化。起初,我计划为我的网站实现一个可以运行所有 Mafia 变体的综合框架。然而,在查看了几个不同论坛上存档的大量成品游戏规则集后,我意识到合理的规则和游戏机制的空间是如此巨大,以至于我基本上必须创建一种新的特定于领域的编程语言来允许所有可能的变体。为一个简单的个人项目发明一种新语言是相当愚蠢的,而且我目前对此不感兴趣,特别是考虑到我手头有一种非常好的语言,即 JavaScript。
因此,我决定让变体作者上传一个包含变体代码的 JavaScript 文件,我的网站将在适当的时候调用该文件。本质上,实现 Mafia 变体游戏逻辑(我的网站代码需要())的 JavaScript 模块将充当我网站“游戏引擎”的脚本语言。想想用于 C++ 游戏的 Lua。不幸的是,这引入了严重的安全问题。与浏览器不同, Node 运行的 JavaScript 可以访问文件系统、网络等。因此,恶意用户上传一个变体文件来删除我的硬盘内容或开始比特币挖掘是微不足道的,或者其他什么。
我的第一个想法是对每个用户上传的危险库(例如“fs”和“http”)代码执行replace(),将其替换为无效字符串,并在尝试加载文件时捕获随之而来的异常。然而,这种临时的黑名单技术感觉像是一种比我更聪明/更有知识的人之一能够立即克服的方法。 我真正需要的是一种将用户上传的代码有权访问的库列入白名单的方法。有没有办法在 Node.js 中使用 JavaScript 来做到这一点?如果没有,您会建议我如何尽可能保护运行 Node 服务器的计算机?
我目前的策略是要求我自己和少数可信用户在将用户上传的 JavaScript 变体代码引入系统之前对其进行审查,然后一致投票支持,但我希望有一个更自动的方法这样做的方法。
最佳答案
您需要使用vm用于此的模块。基本上它允许在自定义上下文中运行脚本,因此您可以放置您想要的任何全局变量,定义您自己的需求等。
您还应该记住,在 Node.js 中,如果没有任何库,就有可能损害您的应用程序 — 用户只需添加类似 while (true) {}
的内容即可停止整个过程。因此,您需要在单独的进程中运行所有不受信任的代码,并准备好在它们开始滥用 cpu 或内存时杀死它们。
关于javascript - 我可以将用户提供的 Javascript 可用的库列入白名单吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19761776/
我们有一个 QuickBlox 的企业安装(它是 implements XMPP),并且想在我们的 QuickBlox 服务器安装上为我们的所有用户创建镜像帐户。我们还希望同步我们系统的用户使用在我们
我想将我的 nginx 代理服务器配置为仅允许某些 IP 访问它。 据我所知,这通常是在配置文件中完成的,带有允许和拒绝列表,但如果可能的话,我需要一个不同的选项,因为我的白名单非常大。我还需要将其链
我需要实现 XSS 防御,但遇到了麻烦。我读了这个备忘单 https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Pre
如何将逻辑应用的 IP 地址列入白名单。由逻辑应用程序调用的服务(使用 HTTP 操作),但该服务需要白名单才能调用。那么,如何将逻辑APP列入白名单。 我们可以使用Azure API管理进行白名单,
我正在为 Blackberry 10 应用程序使用 Phonegap 2.8.0。 我无法将 https 网址列入白名单。 其他 URL 正在用于白名单。 http 正常,但 https 总是显示
我有一个基于地理分布式云服务的 Azure 流量管理器。我需要锁定主要是 Web API 的云服务,以便只能访问特定范围或 IP 地址。有办法实现这一点吗?或者可能有一些方法可以限制云服务上的 IP
如何将逻辑应用的 IP 地址列入白名单。由逻辑应用程序调用的服务(使用 HTTP 操作),但该服务需要白名单才能调用。那么,如何将逻辑APP列入白名单。 我们可以使用Azure API管理进行白名单,
我有一个基于地理分布式云服务的 Azure 流量管理器。我需要锁定主要是 Web API 的云服务,以便只能访问特定范围或 IP 地址。有办法实现这一点吗?或者可能有一些方法可以限制云服务上的 IP
我正在为我正在开发的类(class)编写单元测试。另一位开发人员正在为他正在开发的方法的同一类开发其他测试。因此我们的测试发现它们位于同一个 JUnit 测试类中。 所以我想做的是建立一个测试套件来运
如何使用授予 root 权限的应用程序创建白名单?必须在没有任何提示的情况下拒绝其他应用程序。 我正在寻找现有的解决方案或一些有关如何编写具有此功能的应用程序的建议。 最佳答案 您应该结账Superu
有一个银行网站,除非我允许接受所有 cookie,否则我无法登录。我使用的是 Firefox 3.0,我已将其设置为不接受定义列表以外的 cookie(工具 - 选项 - 隐私 - Cookies -
我为我的服务用户提供了一个选项,仅允许从他们可以添加的特定 IP 地址访问他们的帐户。检查的工作原理如下: $conn = new mysqli($servername, $username, $pa
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
这听起来像是一个愚蠢的问题,但我一直无法理解 ATS 和白名单。 我使用 Facebook SDK,所以我按照文档中的说明对我的 .plist 进行了适当的更改,以将 Facebook 服务器列入白名
我正在 Android 上构建一个简单的 Tesseract 应用程序,它的目标是识别简单的命令,如 CALL、MESSAGE 等。因为命令数量少而且固定,所以想把它们加入白名单,这样程序就可以达到更
我目前正在为我们部门创建一些网络应用程序。 该部门是更大的 Intranet 的一部分,当然,它为更多部门提供服务。 我在从未使用过的 PC 上设置了 WAMP 环境,并开发了一些简单的应用程序以供该
所以我有一个包含密码和用户名的凭据对象 payload: Object credentials: Object password: "" username: "" 我想在 redu
所以我想限制对某个网址的访问。现在,如果他们来自给定的 IP 地址,则不应提示他们输入密码。如果他们不是来自给定的 IP 地址,那么系统应该提示他们输入密码。 所以一个或: AuthUserFile
我在网页中使用 Angular(8),并希望将多个 iframe 显示为 innerHTML。 默认情况下, Angular domsanitizer 会删除危险元素。我知道我可以使用 bypassS
我正在尝试将可以访问我的应用程序的 IP 列入白名单。我按照本教程创建了 http-balancer。 https://cloud.google.com/kubernetes-engine/docs/
我是一名优秀的程序员,十分优秀!