【发布时间】:2020-12-25 22:08:56
【问题描述】:
当我使用 EntityFramework 开发一个与在线 MySQL 数据库 交互的 WPF .NET Core 应用程序时,我注意到我完全没有办法保护我的数据库免受如果我的应用已部署并且有人代码将其反转,则使用易于访问的连接字符串读取或修改。
我搜索了一下,发现了以下几个可能的解决方案:
- 使用
aspnet_regiis将连接字符串存储在加密的app.config中(但.NET Core 似乎更倾向于.json配置文件,因此无法使用aspnet_regiis加密) - 使用像
ConfuserEx这样的 c# 混淆器对源代码进行混淆 (如果我理解正确,它只会使连接字符串更难阅读,但仍然有可能得到它并弄乱数据库,对吧?)时间> - 构建 API 并与之交互,而不是对数据库进行更改(但即便如此,如何确保 API 请求真正来自我的 WPF 应用程序而不是来自恶意用户?)
如果您对这些解决方案有更多了解,或者可能有其他方法可以确保安全地连接到在线数据库,欢迎提供详细的步骤/链接!
【问题讨论】:
-
一种选择是将配置键存储在环境变量中,然后读出代码中的值。
-
如果您有超级用户或内部授权人,您可以让用户注册用户名和密码。将这些存储在您的数据库中。一个人查看这些并确定他们是受信任的用户并授权这些。然后,每个用户都有自己唯一的用户名和密码。为了降低网络嗅探的风险,可以使用登录来生成令牌。一个长的随机字符串。这一天有效并缓存在 Web 服务器上。每个请求都会传递一个当天用户唯一的令牌。
-
当然,除非用户与服务器在同一个域中。在这种情况下,您可以使用他们的 windows 登录。
标签: c# database wpf entity-framework security