Stocker des chaînes de connexion dans la machine.config vs de les stocker dans le web.config
Pour un serveur dédié, est-il préférable de stocker la chaîne de connexion dans le web.config ou à la machine.config? quels sont les avantages et les inconvénients de chaque approche?
Grâce
Edit: je suis préoccupé par la sécurité ici, donc, la question est à propos de l'approche qui est plus sécurisé.
Dans les deux cas, vous devriez envisager de le chiffrer (bien que si vous utilisez des connexions fiables, je ne m'inquiéterais pas tant que ça). Il y a plutôt un outil pratique pour ce maintenant au somewebguy.wordpress.com/2009/07/16/...
Lien dans le commentaire ci-dessus mort; maintenant, dans le hugoware.net/blog/encrypt-your-web-config-please
Lien dans le commentaire ci-dessus mort; maintenant, dans le hugoware.net/blog/encrypt-your-web-config-please
OriginalL'auteur Waleed Eissa | 2009-07-26
Vous devez vous connecter pour publier un commentaire.
Je serais toujours aller avec web.config au motif que c'est là où tout le monde serait d'attendre d'elle. Il est inutile de donner à la personne qui a besoin de maintenir le site web plus de difficulté en stockant les chaînes de connexion dans un lieu inhabituel.
SUPPLÉMENTAIRES
Basé sur les informations supplémentaires que l'OP est intéressé à l'aspect sécurité, plutôt que de et la raison pour laquelle j'ai ajouté ce qui suit.
Je ne pas stocker des chaînes de connexion dans la machine.config. Si vous ne que tout .NET application s'exécute sur l'ordinateur a accès à vos chaînes de connexion.
web.la config est un fichier protégé. IIS ne pas la servir par défaut, sauf si vous faites quelque chose pour misconfigure.
En fait, je vais maintenir le site moi-même si ce n'est pas un problème.
Ma recommandation ne mentionne pas qui est le mainteneur. Même si c'est vous, ma recommandation est toujours debout. Garder les choses simples. 6 mois à la ligne que vous pourriez avoir oublié.
Je ne l'oublie pas, promis 🙂 .. sérieusement, le point de la question est de savoir quelle approche est la plus sécuritaire et pourquoi. Il me semble de la machine.config peut être un peu plus sûr que le web.config. La sécurité est vraiment ma préoccupation ici.
Ensuite, vous pouvez modifier votre question afin de refléter qui vous êtes plus intéressé par l'aspect de la sécurité.
OriginalL'auteur Colin Mackay
Je préfère garder mes chaînes de connexion dans la machine.config.
Mon chaînes de connexion sont différents entre le développement, l'assurance qualité et les environnements de PROD et si je l'ai gardé dans le web.config je ne pouvais pas en toute sécurité souffler mon répertoire de destination et copie le nouveau code. Ou je dois rappeler à déployer tout, mais le web.config, cela crée des problèmes lorsque d'autres parties du web.config changement.
Cela dépend de votre situation, mais quand ça devient un peu compliqué le risque d'avoir le mal de la chaîne de connexion dans le mauvais environnement est tout simplement trop grand. Nous avons effectivement eu des situations où des essais ont été frapper le mauvais bases de données, car la chaîne de connexion a été déplacé par inadvertance. De la Machine.la config est utilisé pour la machine à des éléments spécifiques - d'où le nom. Il n'est jamais déplacé de machine à machine.
Donc dans ma machine.config j'ai plusieurs chaînes de connexion comme blogConnString, forumConnString, projectxConnString, etc. Je ne considère pas ce mélange de réglage pour les différents sites, je considère qu'il est de garder la machine réglage de niveau dans le maching.config.
Vous étiez inquiet au sujet de la sécurité, je pense qu'une fois qu'ils sont sur la boîte ils sont également garantis. Mais si la chaîne de connexion est dans le web.config il finit généralement dans le contrôle de code source, le développeur du bureau, dans la sauvegarde des fichiers, installer des plans de déploiement, etc. Ce qui rend le web.config façon moins sûre de moi.
Enfin, une autre approche est de l'avoir dans un tout autre fichier de config (dire WebEnvironment.confg), qui est ensuite référencé dans votre site web.config. Ce fichier serait assis dans un répertoire qui n'est pas physiquement en vertu de votre site web, mais qui est pratiquement en vertu de votre site. Plus de détails sont ICI.
Si vous installez Windows maintenant, vous pouvez profiter d'une chaîne de connexion par défaut dans la machine.config - LocalSqlServer. C'est la configuration de la machine de la valeur pour les locaux SQL Express. J'ai la configuration de la machine pour mon blog, mon site principal, etc. En tant que développeur, il est tout à fait facile.
Je suis d'accord avec JBrooks. Paramètres de configuration que le changement entre les environnements sont d'une grande douleur et il est beaucoup plus facile de gérer les environnements de tous ceux qui sont dans la machine.config à la place de l'individu. Il fait sens pour moi, sur notre serveur de test, j'ai toujours envie de point de servicetest.example.com et sur la production, je veux toujours à point service.example.com. Pourquoi voudrais-je à maintenir manuellement ces paramètres pour chaque application et aussi les avoir copiées sur des dizaines de projets?
Donc tu peux mettre des informations sensibles, telles que la production de chaînes de connexion (mot de passe) dans le communiqué de fichier de transformation dans votre référentiel de code source où chaque développeur a accès à la production de données de connexion?
c'est très agréable. La société pour laquelle je travaille a 300 développeurs (dont plusieurs sont en contractant les membres du personnel qui, habituellement, d'aller et venir dans les prochaines semaines), il n'est donc pas aussi simple que de faire confiance à tout le monde, comme idéal que cela peut être. Il serait irresponsable de vos clients et de leurs utilisateurs à la sécurité. Dans le royaume-UNI, vous serait en violation de la Loi de Protection des Données (ico.org.royaume-uni/pour-les organisations/guide-pour-la protection des données/...)
OriginalL'auteur JBrooks
Personnellement, je n'aurais jamais stocker mes chaînes de connexion dans ma machine.fichier de config, toujours dans le web.config.
Vous dire que c'est un serveur dédié, mais est-ce de serveur dédié à une seule application web?
Si non, vous avez maintenant obtenu un fichier unique (de la machine.config) c'est effectivement le partage de données de configuration pour plusieurs (probablement de l'onu en matière d'applications web. Selon le nombre de ces demandes, et si jamais vous avez besoin de les déplacer vers un autre serveur, à l'aide de la machine.config pourrait devenir très salissant.
Même si le serveur est dédié à une application web unique, vous aurez probablement être de l'exécution de vos tests et de développement sur d'autres machines. Depuis la machine.config n'est pas normalement un fichier qui est inclus dans le fichier-ensemble d'un ASP.NET projet d'application web, vous aurez probablement à sortir de votre chemin pour déployer la machine.config pour chacun des différents dev/test/machines de production, et de s'assurer que les autres (non-chaîne de connexion) de configuration liées à l'intérieur d'eux est correct pour cette machine.
En utilisant le web.config pour stocker la base de données de chaînes de connexion semble tout à fait logique et est entièrement attendus par presque tous les ASP.NET les développeurs, même si vous avez plusieurs applications qui vont utiliser la même base de données sur le même serveur de base de données. Garder cette configuration dans le web.config de chaque application permet à chacune de ces applications d'être plus autonome et ne pas dépendre d'une autre "à l'extérieur" fichier.
Je considère en général que la machine.config et quelque chose que le cadre lui-même utilise, et il appartient sur une machine et qui est spécifique à cette machine. J'ai très rarement à toucher moi-même. J'ai vue sur le web.config comme un fichier qui fait partie intégrante de votre projet d'application web et "bouge" avec le projet comme il se déplace et est déployé sur différentes machines.
Aussi, n'oubliez pas que beaucoup de ce qui est défini dans la machine.config peut être "remplacée" sur une application par application, par la redéfinition de certains éléments de configuration spécifiques au sein d'une application web.fichier de configuration.
Bien sûr, il y a quelques raisons valables d'édition/modification de votre machine.fichier de configuration (comme plusieurs serveurs web dans une batterie de serveurs web sera probablement besoin de choses comme le cryptage/décryptage des clés à l'intérieur de la machine.config pour être synchronisé), cependant, je ne crois pas que la base de données de chaînes de connexion sont une de ces raisons valables.
Craig - je comprends votre point, mais je pense que vous êtes absent de la réalité de la maintenance de grands ensembles d'applications qui utilisent le web ou de l'application de config. Nous avons 25+ projets sur certains de nos serveurs qui contiennent tous la même base de données de la chaîne de connexion. Nous allons avoir à mettre à jour manuellement toutes les chaînes de connexion dans tous les projets afin de déplacer notre serveur de base de données pour un nouveau nom d'hôte. Alors que si ils étaient dans la config de la machine, on pouvait les changer dans un seul endroit.
Pour votre situation donnée, ce qui est un peu inhabituel, je peux comprendre souhaitant stocker la chaîne de connexion dans la machine.fichier de configuration pour éviter de répéter exactement la même chaîne de connexion dans plus de 25 web.les fichiers de configuration. Je dirais, cependant, que la plupart des gens qui ont 25 applications sur le même serveur aura probablement beaucoup de différentes chaînes de connexion, en grande partie spécifique à chaque application.
OriginalL'auteur CraigTP
Si la sécurité est votre préoccupation principale, se concentrer sur le verrouillage de la base de données et les autorisations des utilisateurs. La sécurité de la différence entre web/machine .la config est minime. Colin réponse est bonne. J'aurais voté jusqu'ou de commentaire, là, mais je n'ai pas le moxie encore!
OriginalL'auteur Jerry
Il y a beaucoup de bons points, ici. JBrooksde l'environnement est le plus proche de la mienne, mais en fin de compte, je suis en désaccord avec la mise en chaînes de connexion dans la Machine.config.
Je suis d'accord avec JO mais pas pour la raison qu'il cite, ici. Je tiens à souligner, comme JBrooks dit, les chaînes de connexion sera très probablement utiliser les informations d'identification différentes dans le développement et la production d'environnements. Notre intranet, développement de bases de données, par exemple, ont tous le même ensemble de simples informations d'identification, tandis que nos bases de données de production ont chacun différentes informations d'identification avec des mots de passe complexes. Il y a donc de très bonnes raisons pour ne pas mettre vos chaînes de connexion sur le Web/App.fichier de config, mais plutôt dans un fichier local vers le serveur cible. J'aime le registre, moi-même, mais je sais que c'est pas du tout pris en charge. Clairement, la Machine.fichier de config est là pour apporter une solution.
Non, je suis d'accord avec JO à cause de la Machine.config réside dans la .Net framework et pourra être modifié par Microsoft. Mais Microsoft ne sait rien de la
connectionStrings.config
fichier sur nos serveurs de production. Ce fichier est chargé par le Web/App.les fichiers de configuration avec:<connectionStrings configSource="path\to\connectionStrings.config"/>
blowdart fait le point sur le chiffrement--toujours une bonne idée. Mais en fin de compte, la seule façon de protéger pleinement vos identifiants de base de données est de les changer régulièrement.
OriginalL'auteur sthames42
sage de la sécurité vous pouvez regarder dans le stockage de vos chaînes de connexion dans leur propre chiffré .fichier de configuration de votre site web.fichier de configuration permettrait d'avoir une référence.
j'ai l'habitude de trouver plus facile à gérer si elles sont dans un autre fichier. surtout si vous avez beaucoup de chaînes de connexion.
OriginalL'auteur MakkyNZ
tous les bons points. Dans mon environnement, les bases de données sont partagées et le stockage dans un site web.config forces de la redondance. Nous utilisons le standard SQL bases de données ici que tout le monde accède. Séparé fichier de config est préféré. Cela permet de standardiser, de la sécurité et de l'élimination de la nécessité de changer le web.config lorsqu'une application est déployée.
OriginalL'auteur Clem