Où stocker les identifiants de base de données dans une application web?
Je me demande quelles sont les techniques que vous utilisez pour stocker les identifiants de base de données pour votre application. Je suis particulièrement concernés avec java webapps, mais je ne pense pas qu'il soit nécessaire de limiter les questions.
choses à prendre en compte:
Utilisez-vous les fichiers de propriétés,xml configs, d'autres?
Est-il intégré dans votre application(c'est à dire dans un fichier jar) ou entreposés séparément sur le système de fichiers quelque part?
Est le mot de passe crypté? Si oui, quel système de cryptage utilisez-vous?
OriginalL'auteur shsteimer | 2009-02-17
Vous devez vous connecter pour publier un commentaire.
Puisque vous êtes en laissant la question ouverte de la plate-forme, je vais ajouter que la base de données d'informations d'identification pour .NET applications sont stockées dans le site web.fichier de configuration. À partir de la version 2.0 et au-dessus, il y a une section ConnectionStrings qui facilite l'accès par programme à la chaîne de connexion.
En plus d'avoir IIS bloquer automatiquement les demandes directes pour le web.fichier de configuration par défaut, vous pouvez également utiliser un IIS commande pour crypter la ConnectionString section du site web.fichier de configuration. Ce cryptage est spécifique à une machine, en ajoutant à ses points forts, et la .NET runtime aussi décrypter la chaîne de connexion à la volée lorsque vous y accédez, tellement là n'est aucun besoin de codage supplémentaire dans votre application pour travailler avec elle.
OriginalL'auteur Dillie-O
Avec Java, base de données des pools de connexion doit être transmis à webapps par le conteneur. C'est dans la norme soumise à déclaration en WEB-INF/web.xml en tant que ressources. La même chose s'applique à des sessions de messagerie et d'autres ressources externes qui peuvent varier d'une installation à. Rechercher JNDI pour plus d'informations sur cette)
La belle partie de ceci est que l'application ne se soucient pas de la façon de se connecter à quoi que ce soit à l'extérieur. Il n'en verrez pas tous les mots de passe, car le conteneur lui-même qui va les utiliser.
Dans tomcat c'est configurée à partir du contexte de fichiers (par exemple) dans la résolution conf/Catalina/localhost/, conf/server.xml ou - de préférence uniquement pour les environnements de dev, de la webapps META-INF/context.xml. D'autres environnements ont leur propre emplacement de la configuration ou de l'application.
Le cryptage des mots de passe dépend en réalité de l'conteneur. Tomcat stocke en clair dans le texte, mais l'application elle-même ne pas le voir. Je ne sais pas à propos de la mécanique dans d'autres environnements.
OriginalL'auteur Olaf Kock
Sur la pile de Microsoft, les choses peuvent être très agréable.
Vous créer un réseau de compte d'utilisateur dans Active Directory pratiquement sans autorisations. Vous configurer IIS pour exécuter votre application en tant qu'utilisateur. Vous accordez à l'utilisateur un accès en lecture sur le web des dossiers et des fichiers sur le disque. Vous pouvez configurer SQL Server pour accorder à l'utilisateur autorisations de lecture/écriture sur les tables que vous voulez. Et dans la chaîne de connexion, vous demandez la db client pour se connecter en tant que le compte d'utilisateur qui la webapp est actuellement en cours d'exécution.
Il n'y a qu'un seul compte d'utilisateur, même si elle est visible en plusieurs endroits. Ce compte d'utilisateur est extrêmement limité d'autorisations. Il n'y a pas de stockage des mots de passe de n'importe où, même si elle est cryptée. Il n'y a pas de configuration à faire dans le code pour que cela fonctionne (c'est dans la mise en place des autorisations).
OriginalL'auteur yfeldblum
Dépend de l'application serveur.
J'ai l'habitude d'utiliser JNDI recherches pour la source de données, de sorte que les informations d'identification sont stockées sur le serveur d'application qui gère le pool de connexions. Pas besoin de mettre autre chose que le nom JNDI de la configuration de cette façon.
Oui, le mot de passe est crypté sur WebLogic.
Sur Tomcat choses peut être risquée. Infos de connexion est en META-INF/context.xml, ce qui signifie que le texte brut pour le mot de passe. Je ne fais que du développement, de ne jamais en production.
OriginalL'auteur duffymo
Dans Django, les informations d'identification sont dans votre
settings.py
fichier de configuration. Car ce n'est généralement pas conservés dans votre/var/www/
arborescence de répertoires, il est très fort.Aussi, une seule application Django peut être utilisé et réutilisé) pour de nombreux sites web ou des serveurs web sur le même hôte, chacun avec ses propres paramètres. Ainsi, le
settings.py
configuration n'est pas livré avec l'application, mais elle est partie d'un simple déploiement de l'application.OriginalL'auteur S.Lott
Pour asp.net:
- Je stocker des paramètres globaux tels que la chaîne de connexion et les chemins de référentiel dans le Registre et ensuite une référence à l'entrée de registre dans le web.config.
La raison principale étant que souvent, je trouve que j'ai à écrire d'un seul fichier exécutable à exécuter des tâches en arrière-plan et d'autres fonctions automatisées qui ont besoin d'accéder aux mêmes paramètres. Par conséquent, en gardant tout ce qui est véritablement mondiale dans un endroit facilement accessible pour une vie plus facile.
OriginalL'auteur Robin Day
Qui sont les bons endroits pour garder votre application web de la base de données d'informations d'identification?
Dans un fichier séparé dans votre code source
Dans un autre fichier sur votre serveur web hôte
Dans votre base de données
Aucun. La base de données d'informations d'identification ne doivent jamais être stockées
OriginalL'auteur deepa