2013-05-14 5 views
2

Je voudrais commencer un nouveau projet et l'un des premiers problèmes que j'ai compris est la sécurité de mes données de connexion mysql.comment stocker les données de connexion mysql en toute sécurité?

Je veux savoir s'il est possible de configurer le logiciel pour choisir un serveur de base de données; Pour cette raison, il est nécessaire de stocker les informations de connexion (utilisateur, mot de passe, nom de base de données) dans une sorte de fichier (xml, bin, ...) mais pas vraiment sûr et peut être vu par tout le monde en raison du manque de cryptage.

Existe-t-il un moyen facile de protéger ces informations sensibles ou dois-je écrire mon propre mécanisme de chiffrement pour cela?

Au cas où je devrais écrire le mien, est-ce qu'il y a une ligne directrice pour bien faire les choses?

+1

Aussi, quand vous dites « vu par tout le monde », cela signifie que tout le monde avec un accès de connexion à la boîte, à droite? Une fois que les utilisateurs ont accès à la boîte, il est difficile de le sécuriser ... – bryanmac

+0

Ne stockez pas les informations d'identification dans les applications accessibles à partir du bureau. Cela signifie qu'ils peuvent faire de l'ingénierie inverse pour les trouver assez trivialement. Au lieu de cela, placez votre application derrière un point de sécurité qui les oblige à être connecté. Faites-en un ensemble de services, etc. –

+0

Commencez ici: http://msdn.microsoft.com/fr-fr/library/89211k9b(v= vs.80) .aspx – Maarten

Répondre

1

Non, vous n'avez pas besoin d'écrire votre propre cryptage, .NET a déjà un cryptage. Il suffit d'utiliser le cryptage Rijndael (AES) pour le cryptage.

Importer l'espace de noms: using System.Security.Cryptography;

Ensuite, utilisez la classe: Rijndael Class

et jetez un oeil à ce fil: How to generate Rijndael KEY and IV using a passphrase? utiliser le cryptage correctement/en toute sécurité.

Exemple:

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

est-ce un moyen "sécurisé" (je sais qu'il n'y a pas du tout de sécurité) de stocker ces informations dans un environnement ouvert? ou encore facile à casser? comment serait-il difficile de briser ce cryptage? – Alex

+1

AES est un moyen très sûr de stocker des données. Imho c'est l'état de l'art en cryptage. Bien sûr, la sécurité dépend de votre mot de passe (clé), si vous utilisez un mot de passe faible, une attaque avec un dictionnaire peut casser votre cryptage. Je l'ai aussi utilisé dans mes projets. Votre WiFi l'utilise aussi. Donc ça ne peut pas être mauvais du tout. Si vous voulez comprendre comment fonctionne AES, regardez ici: http://www.cs.bc.edu/~straubin/cs381-05/blockciphers/rijndael_ingles2004.swf Une explication très bonne et animée. – jAC

+0

quel mot de passe voulez-vous dire? mon mot de passe de base de données (qui est généralement 64 + caractères large) ou la clé rijndael (qui est pré-autorisé si je le vois bien)? – Alex

2

Les chaînes de connexion dans une configuration d'application sont un scénario très commun. Normalement, vous enregistrez ces valeurs dans un fichier appelé app.config ou web.config.

Jetez un coup d'œil au MSDN help site.

La section que vous recherchez est appelé Encrypting sections du fichier de configuration à l'aide de la configuration protégée

Questions connexes