客户端上传到数据库

Clients uploading to database

我设置了一个 python 脚本,可以在玩游戏时从用户那里捕获游戏数据。这样做的最终目标是从每个用户那里获取所有数据到我的网络服务器上的 postgresql 数据库中,在那里可以通过 django

整理和显示所有数据

在我看来,我有 2 个选择来完成此任务:

  1. 虽然python脚本是运行,但我可以直接打开一个到数据库的连接并实时上传到它
  2. 在游戏过程中,我可以将 csv 文件保存到他们的计算机上,而不是直接上传到数据库,然后有一个单独的应用程序可以找到这些日志文件并在稍后将它们上传到数据库

我喜欢 (1),因为这意味着这些日志文件不能被用户篡改,因为它直接进入数据库 - 因此我们可以防止伪造并确保有效数据。

我喜欢 (2) 因为最初的 python 脚本是每个用户在他们的计算机上都会有的东西,这意味着他们可以随意打开它(必须是这样才能与游戏)。换句话说,如果我选择 (1),用户将暴露于连接到不安全的数据库的 user/pass 详细信息。对于 (2),该应用程序可以只是一个 exe,您看不到源代码,也看不到数据库登录详细信息

我的问题:

  1. 因此,在一种情况下,我会暴露登录详细信息,而在另一种情况下,我会冒着最终用户在上传前篡改 csv 文件的风险。有没有一种方法可以结合这两种方法的优点而不必处理缺点?

  2. 至少,如果我必须选择这两种方法中的任何一种,那么避免其崩溃的最佳方法是什么?那么是否可以防止在公开可用的 python 脚本中公开数据库凭据?如果我必须保存csv文件,有没有办法防止篡改或检查它是否被篡改?

使用带有 JSON 的 REST 来 post 将数据发送到远程服务器是一种替代方法吗?

在这种情况下,您可以为客户端编写 JSON 脚本,通过 HTTP(例如 REST)向远程服务器连续 post 数据。

这将降低数据被篡改的风险,并且您不必公开任何数据库凭据。

该脚本使用 login/pwd 或唯一字符串向您的 Django 网络服务器发出 POST 请求。 Web 服务器验证凭据并将数据插入数据库。