【问题标题】:Client-Server Secure communication within application应用程序内的客户端-服务器安全通信
【发布时间】:2021-03-20 02:55:34
【问题描述】:

我想使用 .NET 在 C# 中的 Unity 游戏引擎中创建一个游戏,我可以在其中安全地连接到私有服务器,并从/向服务器读取和写入数据。我了解如何以不安全的方式执行此操作,我将在其中设置一个私有 SQL 数据库,并在两者之间设置一个网页界面。

我的问题来了,我知道我是否希望 Web 界面公开,我需要凭据才能连接到服务器,例如 Auth 密钥或用户名和密码。但是,为了使用这些,auth-key 需要作为文件随游戏一起提供,或者需要直接写入代码库。我知道用户可以反编译游戏,并访问这些文件并在我包含它们时获取凭据,这意味着据我所知,该选项不在桌面上。

据我了解,即使在数据库和客户端之间有这一层,仍然可以找到它们之间接口的 url,然后像我在游戏程序中所做的那样向该 url 发送自定义函数调用。这不会导致与打开数据库相同的结论吗?

如果有人对此有答案,或者有我可以了解此过程的资源,请告诉我!我以前从未做过服务器端编程,也从未考虑过安全问题。

【问题讨论】:

    标签: c# unity3d security server database-connection


    【解决方案1】:

    您是正确的,您不应该将身份验证密钥嵌入到您的应用中。您失败的地方是将您的数据库暴露给世界。不要这样做。相反,将其隐藏在仅提供 json 数据文件的 Web 服务器后面。这样您就可以利用 Web 服务器的身份验证和 会话 协议。

    由于您已经在使用 C#,我建议您查看 ASP.NET Core MVC,尤其是 WebAPI。但我可能会推荐 node.js 用于轻量级微服务。

    【讨论】:

    • 我知道我想将数据库隐藏在 Web 服务器后面,但是,这不会有同样的问题吗?如果它是一个公共 Web 服务器,那么任何人都可以访问它并将函数调用传递给程序,就像我一样并访问数据。如果它是一个私人网络服务器,我也有同样的凭证问题。如果我有误解,请告诉我。
    • 您提供给用户/应用程序以使用您的网站的密码与您提供给您的网站以使用数据库的密码不同。此外,如果您正确编写网站,那么您的用户只能运行您为网站提供的预设 sql 脚本/函数。您甚至可以通过密码或在您的应用中生成机器密钥来为每个唯一用户/应用实例提供自己的身份验证 ID(我建议这样做)。
    • 对不起,当我谈论用户时,我并不是说他们会有用户帐户或任何东西,我只想托管访问该网站的匿名用户。我想我要说的是,如果我需要能够从 SQL 数据库中添加和删除信息,那么即使使用预设的 sql 脚本/函数,他们不能利用那些预设的脚本/函数来添加/删除那些我不希望他们这样做?
    猜你喜欢
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    相关资源
    最近更新 更多