C# 连接字符串到数据库.最佳做法
本文关键字:最佳 数据库 连接 字符串 | 更新日期: 2023-09-27 18:34:54
我总是在网上遇到很多教程。
下面是 Visual C# 中命令按钮的连接字符串,用于尝试是否建立连接。
我的观点是这样的。在程序中输入用户名和密码是否足够好?像这样:用户名=根;密码 = 管理员 。当涉及到安全性时,它是否容易受到攻击?就像SQL注入或其他什么一样。
这样编码对吗?
try
{
string myConnection = "datasource = localhost; port = 3306; username = root; password = admin";
MySqlConnection myConn = new MySqlConnection(myConnection);
MySqlDataAdapter myDataAdapter = new MySqlDataAdapter();
myDataAdapter.SelectCommand = new MySqlCommand(" SELECT * database.edate ;", myConn);
MySqlCommandBuilder cb = new MySqlCommandBuilder(myDataAdapter);
myConn.Open();
DataSet ds = new DataSet();
MessageBox.Show("Connected");
myConn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
为了获得最佳灵活性,您应该将连接字符串存储在Web.config
的配置文件App.config
中。有一个特殊的部分ConnectionStrings
其中包含连接字符串的键值对。
反汇编可能会破坏存储在代码中的安全信息。配置文件可以加密。
演练:使用受保护的配置加密配置信息
如果有人掌握了您的可执行文件,他可以对密码和用户名进行逆向工程。如果你把它存储在app.config中,那就更容易了。处理SQL SERVER的最佳方法是Windows身份验证(如果可能(如果您处理 mysql/oracle,或者如果 Windows 身份验证不是一种选择,您应该找到一种方法来屏蔽这些名称/密码(您可以使用某种算法从"加密"文本中创建真实密码并在程序中运行它( - 它也可以逆转,但效果更大。更好的方法是使用某种证书。我自己没有做过。
SQL 注入与连接字符串无关,它更与将参数传递给查询的方式有关,以及是否在传递用户输入之前检查用户输入(如果使用字符串连接而不是更安全的方法(
在程序本身中建立连接可能不会给应用程序带来问题,但作为一种约定,最好在代码中使用 ConfigurationManager 启动连接,并在 .config 文件中建立与数据库的连接。
此外,可以为 .config 文件提供安全性。
使用配置(app.config 或 web.config(的好处
- 您可以对配置强制实施安全性
- 您可以使用配置转换(Web.QA.Config、Web.Production.Config 等(根据环境配置连接字符串或其他设置 - 访问 http://msdn.microsoft.com/en-us/library/vstudio/dd465318(v=vs.100(.aspx