Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以代码(C#)保存SQL Server登录_C#_Mysql_Security_Mariadb_Code Security - Fatal编程技术网

以代码(C#)保存SQL Server登录

以代码(C#)保存SQL Server登录,c#,mysql,security,mariadb,code-security,C#,Mysql,Security,Mariadb,Code Security,我是一名相当新的开发人员,目前正在开发一个C#程序,该程序通过以下代码连接到MYSQL服务器: class MySql { private MySqlConnection connection; private string server; private string database; private string uid; private string password; //Constructor public MySql

我是一名相当新的开发人员,目前正在开发一个C#程序,该程序通过以下代码连接到MYSQL服务器:

    class MySql
{
    private MySqlConnection connection;
    private string server;
    private string database;
    private string uid;
    private string password;

    //Constructor
    public MySql()
    {
        Initialize();
    }

    //Initialize values
    private void Initialize()
    {
        server = "mydomain.com";
        database = "dbName";
        uid = "Username";
        password = "Password";
        string connectionString;
        connectionString = "SERVER=" + server + ";" + "DATABASE=" +
        database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

        connection = new MySqlConnection(connectionString);
    }

    //open connection to database
    private bool OpenConnection()
    {
        try
        {
            connection.Open();
            return true;
        }
        catch (MySqlException ex)
        {
            //When handling errors, you can your application's response based 
            //on the error number.
            //The two most common error numbers when connecting are as follows:
            //0: Cannot connect to server.
            //1045: Invalid user name and/or password.
            switch (ex.Number)
            {
                case 0:
                    MessageBox.Show("Cannot connect to server.  Contact administrator");
                    break;

                case 1045:
                    MessageBox.Show("Invalid username/password, please try again");
                    break;
            }
            return false;
        }
    }

    //Close connection
    private bool CloseConnection()
    {
        try
        {
            connection.Close();
            return true;
        }
        catch (MySqlException ex)
        {
            MessageBox.Show(ex.Message);
            return false;
        }
    }
现在我不太确定如何安全地保存服务器登录。 正如您所看到的,在我的代码中,域、用户名和密码只是公开地存在于代码中

据我所知,不应该是这样


我该怎么纠正呢?或者像那样储存是省钱吗?谢谢

在.NET中,连接字符串通常存储在应用程序的.config文件中(对于ASP.NET为web.config,对于桌面为app.config)。配置文件中的MySQL连接字符串示例如下所示:

<connectionStrings>  
  <add name="MySqlConnectionString"
   providerName="MySql.Data.MySqlClient"
   connectionString="server=127.0.0.1;uid=root;password=bpdash;database=sample" />
</connectionStrings>


您可以在配置文件中存储db登录名,并使用
ConfigurationManager
从配置中读取这些值。如果您使用的是.net core,您可以将它们存储在
appsettings.json
文件中,然后从中读取它们。如果您对用户名和密码字符串进行加密,然后在应用程序中对其进行解密,也可能会有所帮助。@Timothy您是否将此应用程序的副本分发给用户?还是服务器托管的应用程序?@ICEMAND谢谢你的回答,但用户名和密码不是给用户的,而是要首先连接到我的数据库。@AaronLS我主要计划自己在本地使用它。所以不是基于网络的。@RyanWilson谢谢,我会试试的!非常感谢你!现在我有了关键字:)从未使用过.configs,但应该很容易。祝您有个美好的一天!没问题。我更改了我的示例,以显示MySQL连接字符串的外观。Lucy,谢谢!为了确保实现正确:我可以删除Initialize中的第一部分并将配置读取器放在那里,然后连接=新连接?您可以使用类似
connection=newmysqlconnection(ConfigurationManager.ConnectionStrings[“MySqlConnectionString”])的东西