# 游戏安全 Time:客户端与服务器 Roblox 开发者在进行游戏开发时,可能需要注意游戏安全方面的问题。虽然绝大部分 Roblox 玩家在游玩时会遵守使用条款,但仍然有部分玩家会试图通过破坏数据存储、添加模型等方式来破坏游戏规则。 我们将在本文中介绍几个保障游戏安全性的方法。 ## 检查免费模型与插件的使用 Roblox 为开发者提供大量的免费模型与插件素材,但即使是最为热门的素材,在使用前也应对其进行详细检查。当使用免费模型或插件素材时: 1. 检查其是否包含任何**脚本**(`Script` 或 `LocalScript`)。 2. 若是,则请仔细检查脚本,分辨其中是否存在不合常理的内容,如添加模型、访问之前从未听说过的服务等。 3. 如果无法分辨代码用途,请尝试对其进行研究或调查。无法独自进行分辨时,可前往 Roblox [社区](https://devforum.roblox.com),寻求各位活跃成员的帮助。 4. 即使你认为代码中并不存在安全漏洞,无论是在 Studio 中还是发布到 Roblox 后,都请对游戏进行认真测试。如果游戏在添加免费模型或插件后产生预期外的行为,请先删除新添加的模型或插件,再查看问题是否仍然存在。 ## 服务器端验证 `Articles/Remote Functions and Events|远程函数和事件`是客户端与服务器之间的通讯的最佳选择,但其安全性并非毫无漏洞。部分十分狡猾的黑客可能会伪造远程事件或对事件传递的值进行更改。因此在收到请求时,开发者应当使用基本的服务器端验证来确认其真实性。 举例来说,游戏中存在供玩家进行购买的商店系统。玩家购买物品时将与客户端侧的界面交互(例如包含“购买”按钮的`Articles/Intro to GUIs|屏显 GUI`)。玩家按下按钮后,客户端将向服务器发送远程事件,请求购买。但**服务器**这一最可靠的游戏管理者必须检查玩家是否有足够的货币完成此次购买行为。 ![](https://developer.roblox.com/assets/blt5fcdc8ffa5581b4b/RemoteEvent-Flow.png) ## 禁用 “loadstring()” 在绝大多数情况下,开发者应当**禁用** Lua 语言中的 `loadstring()` 函数(默认即为禁用)。虽然此函数功能强大,但也可能会破坏游戏的安全性:该函数允许在运行时执行任意和动态代码。禁用此函数后,服务器上的任何 `Script` 在尝试调用 `loadstring()` 时都会报错。 此设置可在 **LoadStringEnabled** 下的 `ServerScriptService` 属性中找到。 ***__Roblox官方链接__:[游戏安全](https://developer.roblox.com/zh-cn/articles/Game-Security)