web-dev-qa-db-fra.com

Quelle est la bonne façon de stocker des chaînes de connexion de base de données du point de vue de la sécurité?

Quelles sont les recommandations, les meilleures pratiques et les dons en ce qui concerne la manipulation des chaînes de connexion dans les applications Web? Quelles sont les choses que l'on ne devrait jamais faire, jamais?

12
rem

Meilleure option: N'utilisez pas de mot de passe pour la base de données, mais utilisez plutôt une authentification intégrée (Windows) si elle est possible, et bien sûr isoler l'identité de l'application autorisée pour la base de données. De cette façon, vous avez le système d'exploitation/serveur Web/SCM gère votre identité, de manière très sécurisée.

S'il n'est pas possible d'aller la voie de I Ntiquegrated W Indows A uthentication (IWA), vous devrez crypter de manière sécurisée la Connstring, de préférence en utilisant quelque chose comme DPAPI (vous n'avez donc pas à gérer la clé de cryptage) et de stocker le Valeur cryptée dans une clé de registre protégée avec des ACL fortes.
[.____] Si vous êtes sur ASP.NET (de vos commentaires, mais pas OP), il existe des outils intégrés pour le faire automatiquement (aspnet_seg, aspnet_regiis, etc. en fonction de la version ...)

6
AviD

choses que vous ne devriez jamais faire

  • mettre la chaîne de connexion dans un fichier texte.
  • avoir un fichier de configuration dans le dossier/répertoire accessible public.

choses que vous devriez faire.

  • créer une fonction d'assistance qui génère un mot de passe de base de données à la volée.
  • modifiez fréquemment le mot de passe de la base de données et le nom d'utilisateur.
  • vérifiez si votre serveur est configuré correctement, vous ne servez pas de fichiers puces comme texte brut.
2
Mohamed

Je vous recommanderais de stocker votre chaîne de connexion en dehors du site Web du site Web.

Si vous utilisez ASP.NET, votre fichier Web.config se trouve dans le répertoire racine du site Web, mais vous pouvez chiffrer une section de votre fichier web.config à l'aide de l'API de protection des données, qui stocke la clé de décryptage solidement.

Quel cadre utilisez-vous pour votre application Web?

2
KirkJ

En option, essayez d'utiliser rôle d'application pour accéder à SQL Server

Avantages:

  • Les administrateurs réseau réguliers peuvent gérer l'accès des données sans avoir à consulter l'administrateur de la base de données (DBA), simplement en contrôlant qui a accès à une application.
  • Vous n'avez pas à vous soucier de garder une piste de changer les utilisateurs avec SQL Server lui-même. Configurez un rôle d'application et vous pouvez le déléguer au niveau du réseau.
  • Vous pouvez limiter la disponibilité des données à une seule application. Par exemple, un utilisateur peut être en mesure de modifier les informations de comptabilité uniquement lors de l'utilisation de l'application General Ledger, et non lorsqu'il se connecte directement à SQL Server.
2
garik