c# - 安全和短的服务器-客户端连接

标签 c# android python mysql server

我正在为 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/

相关文章:

c# - 如何在 VS 2013 中更改预览中的程序名称?

c# - 如何从 C# 中的 Uri 中删除 %20?

python - 是否有任何支持 Python 3 语法的 IDE?

python - 使用python分析抛硬币统计

python - 在 GoogleAppEngine 中从文件生成 json 的正确方法是什么?

c# - 如果后面跟着任何字母,如何使用正则表达式删除单独的 1?

c# - WPF - 将数据库记录显示到列表中

android - 通知不适用于 Android oneplus3 手机

android - Google Play 游戏成就解锁弹出窗口不显示

android - SimpleCursorAdapter 不会填充我的 ListView,没有错误,只是什么也没发生