如何在反编译时不显示任何信息的情况下使用 C# 安全连接到 MySQL
How to make safe connection with C# to a MySQL without showing any info when decompiling
所以我 运行 遇到了大问题。
所以问题是,当我编译我的 C# 项目时,它包含一个连接到 MySQL 服务器的函数,当使用 ILSpy 反编译我的项目时,我的连接字符串是可见的。
我的函数是这样的
void ConnectToDatabase()
{
string myConnectionString;
myConnectionString = "Server=sql7.freemysqlhosting.net;UID==**********;Pwd==**********;Database=**********;";
try
{
conn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString);
secondconn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString);
secondconn.Open();
secondconn.ChangeDatabase("information_schema");
conn.Open();
ConnectionEstablished(true);
}
但这就是问题所在
有什么解决办法吗?
即使我通过服务器端连接检查 MySQL,我怎么能在不吐出我的信息的情况下连接。
谢谢。
您可以使用网络服务在 rogram 启动时向受信任的机器提供配置文件或连接字符串。然后,您可以提示用户输入 Web 服务的用户凭据或使用证书。这样,实际的数据库密码就不会在用户计算机上 "stored",您可以集中禁止 Machines/Users/Certificates。
请注意通常的网络服务安全措施适用(使用 HTTPs、使用强加密、不要自行加密、使用会话等)
没有办法让它 100% 万无一失,但为了保护它免受 ordinary/regular 用户加密,混淆应该足够了。
需要在客户本地系统上部署的应用程序必须进行模糊处理,以保护最终用户不应该看到的任何内容。
加密可用于在本地系统上存储信息,但执行 encryption/decryption 的代码必须通过使用代码混淆进行反编译保护。
由于它是一个客户端应用程序 (winform),因此您需要客户端计算机上的连接信息。我建议使用混淆,使用工具相当容易。
它的常见问题和很多可用的帮助:
List of obfuscation tools for .Net
许多类似的问题已经得到解答:
How can I protect my .NET assemblies from decompilation?
Protect .NET code from reverse engineering?
所以我 运行 遇到了大问题。 所以问题是,当我编译我的 C# 项目时,它包含一个连接到 MySQL 服务器的函数,当使用 ILSpy 反编译我的项目时,我的连接字符串是可见的。
我的函数是这样的
void ConnectToDatabase()
{
string myConnectionString;
myConnectionString = "Server=sql7.freemysqlhosting.net;UID==**********;Pwd==**********;Database=**********;";
try
{
conn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString);
secondconn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString);
secondconn.Open();
secondconn.ChangeDatabase("information_schema");
conn.Open();
ConnectionEstablished(true);
}
但这就是问题所在
有什么解决办法吗? 即使我通过服务器端连接检查 MySQL,我怎么能在不吐出我的信息的情况下连接。
谢谢。
您可以使用网络服务在 rogram 启动时向受信任的机器提供配置文件或连接字符串。然后,您可以提示用户输入 Web 服务的用户凭据或使用证书。这样,实际的数据库密码就不会在用户计算机上 "stored",您可以集中禁止 Machines/Users/Certificates。 请注意通常的网络服务安全措施适用(使用 HTTPs、使用强加密、不要自行加密、使用会话等)
没有办法让它 100% 万无一失,但为了保护它免受 ordinary/regular 用户加密,混淆应该足够了。
需要在客户本地系统上部署的应用程序必须进行模糊处理,以保护最终用户不应该看到的任何内容。
加密可用于在本地系统上存储信息,但执行 encryption/decryption 的代码必须通过使用代码混淆进行反编译保护。
由于它是一个客户端应用程序 (winform),因此您需要客户端计算机上的连接信息。我建议使用混淆,使用工具相当容易。
它的常见问题和很多可用的帮助: List of obfuscation tools for .Net
许多类似的问题已经得到解答:
How can I protect my .NET assemblies from decompilation?
Protect .NET code from reverse engineering?