C# winform程序连接数据库直连安全吗?

做了个C# winform程序,直接用连接串连接服务器的数据库,这样会不会被人破解?
那个连接串里面不是有账户名和密码吗?应该怎么样才能加密呢?因为是直接连的,没有服务器,只有个服务器上的数据库,您能说的比较详细点

具体怎么加密呢?添加个加密算法?

不安全,给你两个加密解密函数
/// <summary>
/// DES加密,密钥为8位字符
/// </summary>
/// <param name="strEncrypt">需要加密的字符串</param>
/// <param name="strKey">8位的密钥</param>
/// <returns></returns>
public static string DesEncrypt(string strEncrypt, string strKey)
{
if (string.IsNullOrEmpty(strEncrypt)) return null;
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.Default.GetBytes(strEncrypt);
des.Key = ASCIIEncoding.ASCII.GetBytes(strKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(strKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
catch
{
return null;
}
}

/// <summary>
/// DES解密,密钥为8为字符
/// </summary>
/// <param name="strDecrypt">需要加密的字符串</param>
/// <param name="strKey">8位的密钥</param>
/// <returns></returns>
public static string DesDecrypt(string strDecrypt, string strKey)
{
if (string.IsNullOrEmpty(strDecrypt)) return null;
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = new byte[strDecrypt.Length / 2];
for (int x = 0; x < strDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(strDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(strKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(strKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
catch
{
return null;
}
}
}

使用方法,先把连接字符串加密

string strConnEnc = DesEncrypt(strConn,'abcd1234');

然后 strConnEnc 就是加密过的了,可以写在配置文件web.config里头或别的地方

使用的时候
DesDecrypt(strConnEnc,'abcd1234')
调出来结果就是连接字符串了,可以用来连接数据库了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-21
直接连接服务器的数据库方式,如果数据库名、用户名和密码都是用明文的话,不太好,这样可以通SQL语句得到你数据库的表名、表的字段名、表里的内容的。
建议如果想通过直连服务器的数据库方式 ,把数据库名、密码加密,在代码中自己调用时解密使用就可以了。这样可能会安全些。
第2个回答  2010-03-21
有可能,不过能直接看到的是连接字符串,应该会得知数据库名和表名,但具体内容是什么,或者数据库有权限的登录名是什么,就得靠猜或者sql注入了。
第3个回答  2010-03-21
使用 密钥 加密 连接字符串
密钥可以自己定义 属于一个函数!~

具体可以百度!~加密连接字符串
第4个回答  2010-03-21
可以在服务端加一个webservice
程序与webservice进行连接
相似回答