Я сейчас занимаюсь разработкой C# WPF-приложения. Он используется только небольшим количеством людей / устройств. Чтобы упростить задачу, я решил поговорить напрямую с MySQL db.
Теперь я хотел иметь возможность переключать текущие учетные данные пользователя / db одним нажатием кнопки или иметь возможность осуществлять выход из системы. feature.
Я только что попробовал это:
public DBConnect()
{
Initialize(null, null);
}
private void Initialize(string uid, string password)
{
string connectionstring;
connectionstring = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
connection = new MySqlConnection(connectionstring);
}
public void setCredentials(string uid, string password)
{
Initialize(uid, password);
}
public void destroyCredentialsAndConnection()
{
connection = null;
}
Но, очевидно, во время отладки я обнаружил, что старая строка соединения все еще статически кэшируется классом MySQLConnection в фоновом режиме.
В настоящее время похоже, что мой подход работает, но я на самом деле беспокоюсь о безопасности этой реализации, чтобы перечислить несколько проблем:
- дамп памяти (использование строк для паролей, которые не может быть зашифрован и не может быть удален сборщиком мусора в течение некоторого времени)
- дамп памяти (тот факт, что строка подключения кэшируется даже после «выхода из системы»)
- сеть traffi c сниффинг (зашифровано ли соединение между базой данных и моим C# приложением)?
- физический доступ к серверу ver (база данных MySQL хранится в зашифрованном виде на жестком диске)?
Есть ли лучший (более безопасный) способ переключения учетных данных или полного выхода пользователя из системы?
Я действительно не нашел подобных попыток здесь или где-либо еще во время исследования.
И если бы я попытался разработать бэкэнд php, было бы безопаснее без большого опыта? И могу ли я по-прежнему использовать свои таблицы аудита, созданные на основе MySQL Триггеров?