我总是在网上遇到很多教程。
下面是visual c#中命令按钮的连接字符串,用于尝试建立连接。
我的观点是。输入用户名&程序中的密码? 像这样:username = root;密码= admin。说到安全性它是否容易受到攻击?比如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);
}
答案 0 :(得分:3)
为获得最佳灵活性,您应将连接字符串存储在App.config
的配置文件Web.config
中。有一个特殊的部分ConnectionStrings
,它包含连接字符串的键值对。
代码分解可能会影响存储在代码中的安全信息。配置文件可以加密。
Walkthrough: Encrypting Configuration Information Using Protected Configuration
答案 1 :(得分:0)
如果有人抓住您的可执行文件,他可以对密码和用户名进行反向工程。 如果将它存储在app.config中,则更容易。 处理SQL SERVER的最佳方法是Windows身份验证(如果可能) 如果您处理mysql / oracle或者Windows身份验证不是一个选项, 你应该找到一种掩盖这些名称/密码的方法(你可以使用某种算法从一个"加密"文本创建真实密码并在程序中运行它) - 它也可以反转,但是有更大的效果。更好的方法是使用某种证书。我自己没有做过。
SQL注入与连接字符串无关,它与将参数传递给查询的方式更相关,如果在传递之前检查用户输入(如果使用字符串连接而不是更安全的方法)
答案 2 :(得分:0)
在程序中建立连接本身可能不会为您的应用程序带来问题,但作为惯例,最好使用代码中的ConfigurationManager启动连接并在.config文件中建立与数据库的连接。
此外,还可以为.config文件提供安全性。
答案 3 :(得分:0)
使用配置(app.config或web.config)的好处