2013-05-14 3 views
2

Я хотел бы начать новый проект, и одна из первых проблем, которые я выяснил, - это безопасность моих данных соединения mysql.как хранить данные соединения mysql безопасно?

Я хочу знать, можно ли настроить программное обеспечение для выбора сервера базы данных; по этой причине необходимо хранить информацию о подключении (пользователь, пароль, имя_данных) в каком-то файле (xml, bin, ...), но это не очень безопасно и может быть просмотрено всеми из-за отсутствия шифрования.

Есть ли простой способ защитить эти конфиденциальные данные или мне нужно написать свой собственный механизм шифрования для этого?

В случае, если я должен написать свой собственный, есть ли руководство, чтобы все исправить?

+1

Кроме того, когда вы говорите «просмотрены все», это означает, что все с доступом для входа в поле, не так ли? Когда люди имеют доступ к входу в лог, трудно защитить ... – bryanmac

+0

Не храните учетные данные в приложениях, доступных пользователю с рабочего стола. Это означает, что они могут перепрограммировать вещи, чтобы найти их довольно тривиально. Вместо этого разместите приложение за точкой безопасности, требующей их входа в систему. Сделайте это набором служб и т. Д. –

+0

Начните здесь: http://msdn.microsoft.com/en-us/library/89211k9b(v= vs.80) .aspx – Maarten

ответ

1

Нет, вам не нужно писать собственное шифрование, . У .NET уже есть шифрование.

Просто используйте Rijndael (AES) - Шифрование.

Импорт пространства имен: using System.Security.Cryptography;

Затем используйте класс: Rijndael Class

и посмотреть на эту тему: How to generate Rijndael KEY and IV using a passphrase? использовать шифрование правильно/безопасно.

Пример:

private static byte[] EncryptString(byte[] clearText, byte[] Key, byte[] IV) 
    { 
     MemoryStream ms = new MemoryStream(); 
     Rijndael alg = Rijndael.Create(); 
     alg.Key = Key; //Look at the linked Stackoverflow-Thread 
     alg.IV = IV; // on how to create Key and IV 
     CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write); 
     cs.Write(clearText, 0, clearText.Length); 
     cs.Close(); 
     byte[] encryptedData = ms.ToArray(); 
     return encryptedData; 
    } 
+0

- это «безопасный» (я знаю, что вообще не защищен) способ хранить эти данные в открытой среде? или все еще легко сломать? насколько сложно было бы разбить это шифрование? – Alex

+1

AES - это очень безопасный способ хранения данных. Imho - это современный уровень шифрования. Конечно, безопасность зависит от вашего пароля (ключа), если вы используете слабый пароль, атака со словарем может нарушить ваше шифрование. Я тоже использовал его в своих проектах. Ваш WiFi использует его тоже. Так что это не может быть плохо. Если вы хотите понять, как работает AES, посмотрите здесь: http://www.cs.bc.edu/~straubin/cs381-05/blockciphers/rijndael_ingles2004.swf Очень хорошее и анимированное объяснение. – jAC

+0

Какой пароль вы имеете в виду? мой пароль для базы данных (обычно это 64+ символов) или ключ rijndael (который предваряется, если я вижу это правильно)? – Alex

2

Соединительные строки в конфигурации приложения являются очень распространенным сценарием. Обычно вы сохраняете эти значения в файле с именем app.config или web.config.

Посмотрите на MSDN help site.

В разделе вы ищете, называется Шифрование разделов конфигурации файлов с помощью Protected Configuration

Смежные вопросы