2009-09-13 6 views
2

Mon application .NET WinForms se connecte au serveur ftp et télécharge un fichier. Pour ce faire, un mot de passe pour la connexion est requis. Le mot de passe doit être stocké dans un fichier de configuration, mais il doit être chiffré. Les seules solutions que j'ai trouvées incluent soit la sécurisation de la section config (ce qui ne m'appartient pas dans la section appSettings où le mot de passe est qu'il y a d'autres données qui doivent être changées manuellement) ou DPAPI (et ça ne marche pas aussi car les mots de passe cryptés sur mon ordinateur ne peuvent pas être déchiffrés sur les autres et cela est nécessaire). Y a-t-il d'autres techniques?Sécurisation des mots de passe dans le problème de configuration

+0

J'ai mis à jour ma réponse. –

+0

Vous pouvez créer vos propres sections, mais vous devez définir un gestionnaire pour les analyser. Par exemple, voir http://www.codeproject.com/KB/aspnet/ConfigSections.aspx –

+0

ok mais décrypter une section cryptée sur mon ordinateur à nouveau possible seulement sur ma machine! et c'est le problème – agnieszka

Répondre

2

Vous pouvez crypter et décrypter manuellement à l'aide d'un chiffrement symétrique dans votre application (c'est-à-dire AES) et avoir le mot de passe chiffré stocké dans le fichier de configuration. Le problème est bien sûr que vous devrez stocker la clé symétrique qui crypte et déchiffre le mot de passe dans votre application, donc toute personne ayant une connaissance de crypto et .net serait capable de réfléchir et de désosser votre binaire assez facilement - et obtenir la clé et donc le mot de passe FTP.

Vous pourriez obscurcir votre binaire pour rendre cela plus difficile. Bien sûr, le nom d'utilisateur FTP et les mots de passe sont envoyés en texte clair de toute façon (à moins que vous n'utilisiez ftps :), donc toute personne qui écoute votre application trouvera rapidement le nom d'utilisateur et le mot de passe.

Je suppose que cela se résume à la façon dont vous voulez sécuriser ce nom d'utilisateur et mot de passe dans votre application? Cette solution empêche ceux qui ont des yeux indiscrets de s'en emparer, mais pas ceux qui sont déterminés.

+0

cette sécurité est suffisante - c'est une simple application interne de l'entreprise et il n'y a pas besoin d'une très haute sécurité, ne veulent pas faire le mot de passe là en texte brut dans le fichier de configuration – agnieszka

3

Vous pouvez chiffrer des parties spécifiques du fichier .config - par exemple, la section <connectionstrings>. Cela peut contenir le mot de passe FTP (même si ce n'est pas vraiment une chaîne de connexion), et vous pouvez laisser la section <appSettings> non cryptée.

Mise à jour: Si vous ne pouvez pas non plus utiliser <connectionstrings>, vous pouvez créer votre propre section personnalisée et la chiffrer.

La plupart des ressources vous indiquent d'utiliser l'outil ASP.NET aspnet_regiis. Here est un article qui parle de crypter des sections pour les applications Windows C#, où l'utilisation d'ASP.NET n'est pas une option.

nouvelle mise à jour: Dans un commentaire, vous avez dit

cette sécurité est assez - il est une application à l'intérieur-entreprise simple, et il n'y a pas besoin d'une très haute sécurité, juste n » t veulent faire le mot de passe mettre il sous forme de texte brut dans le fichier de configuration

alors peut-être this solution fonctionnerait pour vous.

+0

+1. Exactement ce que j'étais sur le point de suggérer! –

+0

encore - c'est toute la section. Et si j'ai besoin de stocker d'autres chaînes de connexion qui pourraient être modifiées manuellement? – agnieszka

+0

Oui. Ou ayez un fichier de configuration séparé pour le mot de passe - alors vous pouvez faire ce que vous voulez au fichier - le chiffrer, le cacher ailleurs, même changer les privilèges de sécurité pour le fichier si possible/réalisable. Cela dépend si votre application doit être distribuée. En fin de compte, ils sont tous vulnérables d'une manière ou d'une autre. Je vous suggère donc de regarder un protocole différent (peut-être SFTP), de filtrer les connexions par IP sur le serveur ou d'envisager une autre approche. serveur. –

Questions connexes