Est-il nécessaire de sécuriser la chaîne de connexion dans le web.config?
J'utilise donc des chaînes de connexion dans ma toile.config utilisant l'authentification SQL.
bien sûr, les gens disent que cela pourrait être une vulnérabilité puisque vous stockez le mot de passe en clair.
cependant, de ce que je sais, IIS ne sert jamais web.config, et web.config ne devrait avoir accès qu'en lecture aux administrateurs et à IIS de toute façon. Donc si le hacker a obtenu l'accès au webserver, alors peu importe le cryptage que j'utilise car la clé privée sera sur le serveur web.
le chiffrement de la chaîne de connexion ne serait-il pas classé comme une sécurité par brouillage?
vaut-il la peine de crypter web.config chaîne de connexion et le stockage de la clé privée du serveur?
de plus, bien sûr, si je n'utilise pas SSL, je transmets la chaîne de connexion par HTTP en clair. Si J'utilise SSL alors ce problème devrait être atténué aussi bien.
5 réponses
Je ne dirais pas que stocker un mot de passe en clair dans le Web.config est une vulnérabilité de sécurité en soi. Mais le chiffrement du mot de passe une mesure de défense en profondeur utile, pas seulement la sécurité par l'obscurité:
- Que faire si IIS est mal configuré pour servir Web.config?
- Que faire si une vulnérabilité de sécurité est découverte dans ASP.NET (comme le padding oracle vulnérabilité) qui permet à quiconque de télécharger Web.config?
- il existe différents degrés d'accès au serveur Web, des privilèges administratifs complets à l'injection de code côté serveur. Si un attaquant peut seulement réussir à faire ce dernier, il pourrait être en mesure de lire Web.config mais pourrait ne pas être en mesure d'accéder aux clés de la machine, surtout si votre application fonctionne sous une confiance partielle.
à la fin, c'est à vous de décider si le risque de stocker des mots de passe en clair dans le Web.config est acceptable. Bien sûr, si L'authentification Windows est une option, alors vous pouvez envisager d'utiliser au lieu de l'authentification SQL.
mise à jour: Quand on parle de sécurité, c'est une bonne idée pour identifier le actif et menaces. Dans ce cas, le bien est des données sensibles dans la base de données (si les données sont sans importance, alors pourquoi prendre la peine de le protéger avec un mot de passe?), et la menace est la possibilité pour un attaquant d'accéder au Web.config et ainsi, la base de données. A possible atténuation chiffrer le mot de passe de la base de données dans le Web.config.
Combien de risque est-il? Devons-nous vraiment prévoir un événement aussi rare?
cette atténuation a déjà fait ses preuves une fois: ASP.NET une vulnérabilité d'Oracle a été découverte. Quiconque stocke un mot de passe en clair dans le Web.config était en danger; tous ceux qui ont crypté le mot de passe ne l'étaient pas. Comment certains êtes-vous qu'une autre vulnérabilité similaire dans ASP.NET ne sera pas découvert dans les prochaines années?
devrions-nous aussi chiffrer le code source et le déchiffrer à l'exécution? Semble excessif pour moi.
Alors que faire si un attaquant obtenir l'accès à votre code source? Quel est l'atout que vous protégez, et quelle est la menace qui vous préoccupe? Je pense que dans de nombreux cas, le code source est beaucoup moins précieux que les données. (Je pense ici à à propos des logiciels commerciaux et open-source disponibles dans le commerce que n'importe qui peut se procurer.) Et si votre code source précieux, peut-être l'obscurcissement est quelque chose à penser.
j'ai l'impression que s'ils ont déjà un accès même limité à votre boîte, alors votre hôte a échoué ou vous avez déjà installé des services vulnérables.
Qu'en est-il des vulnérabilités de sécurité dans ASP.NET ou votre code? Ils pop-up de temps en temps.
ce qui me préoccupe, ce sont les pratiques courantes. Est-il une norme?
Microsoft a recommandé cryptage des chaînes de connexion.
Ce que vous devez faire est d'évaluer le risque que le stockage d'un mot de passe en clair pose:
- Quelle est la probabilité qu'un attaquant sera en mesure de découvrir et d'exploiter une vulnérabilité de sécurité qui expose Web.config? Basé sur l'histoire passée, je dirais que la probabilité est faible (mais pas "astronomiquement" faible).
- Quelle est la valeur ou la nature sensible de vos données? Si tout ce que vous stockez sont des photos de votre chat, alors peut-être qu'il n'a pas beaucoup d'importance si un attaquant obtient votre mot de passe de base de données. Mais si vous stockez personnellement identifiables, alors d'un point de vue légal, je dirais que vous devriez prendre toutes les mesures possibles pour sécuriser votre application, y compris le cryptage de vos chaînes de connexion.
considérer que, si les mots de passe de Production sont présents dans le web.fichier de configuration, alors tout développeur ayant accès à ce fichier a accès à la base de données de Production. C'est particulièrement un problème lorsque le nom d'utilisateur dans la chaîne de connexion a accès en lecture/écriture à la base de données. Il devient alors possible pour les développeurs de "corriger" des choses sans aucun enregistrement que la "correction" jamais eu lieu.
je pense qu'il ne s'agit pas d'une protection "extérieure", mais d'une protection "intérieure".
parfois, administrateur/utilisateur SQL et administrateur OS sont des personnes différentes. Mais l'administrateur du système D'exploitation a accès à tous les fichiers, de sorte qu'il peut facilement lire les informations D'identification SQL dans le web.fichier de configuration. Mais ces informations d'identification peuvent être cryptées d'une manière que même l'administrateur du système D'exploitation n'a aucun moyen de décrypter.
et ce n'est guère "la sécurité par l'obscurité", parce que la chaîne de connexion chiffrée ne peut pas être déchiffrée Sans certificat d'utilisateur correct et généralement seul IIS "Utilisateur" a celui-ci.
j'avais l'habitude de lire quelques articles sur le blog en ligne D'IHackStuff. Ce type a expliqué quelques façons d'obtenir des informations très intéressantes en utilisant Google moteur de recherche taper des choses sur la boîte de recherche comme:
filetype:config web.config -CVS
Ceci est sorti avec de multiples résultats liés à la mise en cache web.fichiers de configuration sur les serveurs de production, toutes les informations de ces fichiers étaient accessibles au public. Considérant cette possibilité, je recommande toujours de crypter web.accès à la base de données de configuration lorsque cette information est précieuse assez.
Vous avez raison de dire que web.config
ne sera pas servi par ASP.NET vers un navigateur. Mais les développeurs sont prudents, donc quand ils sortent une nouvelle version, parfois ils copient un bon web connu.config à quelque chose comme web.config.vieux ou web.config.bak. Et parce que les développeurs sont paresseux, après la publication, ils oublient de supprimer le vieux web.config, ou le laisser traîner pendant quelques jours au cas où ils auraient besoin de faire reculer la version.
Maintenant, .vieux et .bak fichiers être servi à une navigateur, ce qui signifie qu'il est facile d'écrire un script ou un outil qui scanne pour ces fichiers et les télécharge à un attaquant qui peut ensuite passer par eux à leur guise pour chercher des chaînes de connexion avec les noms d'utilisateurs et les mots de passe, et soudainement numéros de carte de crédit de La base de données circule sur Internet...
si vous ne voulez pas entrer dans les lignes de commande et les clés RSA (et franchement, pourquoi le feriez-vous?), prendre un coup d'oeil à cet outil pour chiffrer votre Web.config.