我正在为 Android 开发一个非常简单的游戏,它展示了几乎不花任何钱就可以编写一个 Android 应用程序。
游戏将使用 Unity 制作,因此将使用 C# 编写。我希望用 Python 编写服务器软件,因为我需要提高对这门语言的熟悉程度,并且我希望它能在树莓派上运行(主要用于概念验证)。
服务器只需要担心单个数据库中的单个表。这将在 MYSQL 中保存一个“高分”表。
这就是背景,现在是我的问题。从应用程序将数据传输到服务器的安全且简单的方法是什么,反之亦然?我在看XML based RPC但想看看是否有更简单的方法。该应用程序只需要传递分数、首字母和哈希值即可进行验证。服务器只需要能够将表发回即可。
它不必非常安全,因为我没有存储任何必要的东西,但想防止错误的输入,这就是为什么我有散列来验证数据。
最佳答案
这是一个非常广泛的一般性问题,但这是我的思考方式。过去做过一些 Unity3d 的工作,我会尝试一下。
首先,我不会使用 MySQL,而是会使用 PostgreSQL 或者像 Couchbase 这样的非 SQL 数据库。 Couchbase 和其他非 SQL 数据库在游戏开发人员中很受欢迎,因为与传统的 Rdbms 相比,它们具有更高的可扩展性和灵活的模式。这部分当然只是我的意见。
您使用散列(建议使用 SHA)来防止基本伪造的想法是一种很好的方法,可实现最低级别的安全性。只是不要忘记向散列中添加一些 secret 词,并将 secret 隐藏起来并保存在内存之外——如果可能的话。服务器还需要知道该 secret ,以便能够复制哈希码。
在服务器端,使用 Python 总是一个好主意——恕我直言。我会使用 Flask 或其他一些最小的 Web 框架,并开始构建一个 RESTful api,您只需使用来自 Unity3d 客户端的 HTTP 请求即可。
在客户端之间来回发送的数据只是 JSON(它比 XML 更紧凑),并且有几个 JSON 库可用于 Unity3d - 请务必获得一个专门用于 Unity 的库,因为一些通用的 C# 库可能如果它们依赖于反射,并且还依赖于目标平台,则在 Unity 中会失败。
关于c# - 安全和短的服务器-客户端连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41269113/