Сохранить логин SQL Server безопасно в коде (C #) - PullRequest
0 голосов
/ 01 ноября 2018

Я довольно новый разработчик и в настоящее время работаю над программой на 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;
        }
    }

Теперь я не совсем уверен, как безопасно сохранять логины сервера. Как видите, в моем коде домен, имя пользователя и пароль просто открыто указаны в коде.

И, насколько я знаю, так не должно быть.

Как я могу это исправить? Или это сохранить, чтобы хранить это так? Спасибо!

1 Ответ

0 голосов
/ 01 ноября 2018

В .NET строки подключения обычно хранятся в файле .config для приложения (web.config для ASP.NET, app.config для рабочего стола). Пример строки подключения MySQL в файле конфигурации будет выглядеть примерно так:

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

Тогда есть поддерживаемые методы шифрования этого раздела файла конфигурации. Как использование строк подключения, так и их шифрование обсуждаются в этой статье Microsoft: Строки подключения и файлы конфигурации

...