Je veux utiliser un séchage pour contenir une chaîne de connexion pour une base de données. Mais dès que je définirai la propriété Connectrions de l'objet SQLConnection à la valeur de la section de séchage, elle deviendra visible pour toute autre application capable de lire la mémoire de mon application? P>
J'ai fait les hypothèses suivantes:
a) Je ne suis pas capable d'instancier un objet SQLConnection en dehors de la mémoire gérée de
b) Toute chaîne dans la mémoire gérée peut être lue par une application telle que hawkeye
5 Réponses :
Si vous êtes cela préoccupé par la sécurité, je vous suggère d'activer SSL dans SQL Server et de communiquer avec elle à l'aide de SSL. P>
Le mot de passe de connexion ne doit-il pas toujours être en mémoire à un moment donné?
@Jonb @shamika ouais, je pense que ça serait aussi
Je ne vois pas ce que l'utilisation de SSL a à voir avec la question.
Ceci est un peu orthogonal à la question initiale.
Pourquoi la chaîne de connexion est-elle un problème? Le mot de passe ne serait-il pas ce que vous voulez protéger (sauf si vous ne mettez pas le mot de passe dans la chaîne de connexion qui est facultatif pour tous les pilotes que j'ai vus). Cela étant dit, le mot de passe devra généralement être "dans la claire" en mémoire à un moment donné (sauf si le pilote ait une API qui permet de les mots de passe cryptés ou de quelque chose, mais cela ne voudrait probablement pas beaucoup aider beaucoup de toute façon). P >
Il ne s'agit généralement pas d'un problème car le processus est dans un environnement sécurisé, comme sur un serveur Web ou en cours d'exécution en tant que type de compte d'administrateur système (les utilisateurs normaux ne peuvent pas accéder à la mémoire de processus) ou généralement les deux. Si cela se trouve sur la machine d'un client exécutant dans Userland, vous devez supposer que le processus est compromis de toute façon et cela ne vous aiderait pas. Une fois que vous avez sécurisé le processus, vous n'avez pas à vous soucier des choses comme celle-ci. P>
Les utilisateurs finaux ne sont pas la seule menace. Les API tiers peuvent devenir une aussi. Je conviens bien que si vous écrivez une application et que vous connaissez / faites confiance à toutes les dépendances, ce n'est probablement pas si grosse affaire. Mais dans certaines entreprises, vous n'avez pas ce luxe.
Votre absolument à droite Le séchage ne vous fournit aucun avantage lorsque vous devez transmettre la chaîne dans une API gérée, telles que la définition d'un connecteur.
Il est vraiment conçu pour une communication sécurisée avec des API non gérées sécurisées.
Microsoft pourrait théoriquement envisager d'améliorer l'objet SQLConnection pour prendre en charge une connexion sécurisée, mais je pense qu'il est peu probable de le faire parce que: P>
Securstring n'est vraiment utile que dans une application client, où par exemple. Un mot de passe est conçu de caractère par caractère à partir de l'entrée de l'utilisateur, sans jamais avoir le mot de passe entier dans une chaîne gérée. p> li>
Dans un tel environnement, il est plus courant d'utiliser l'authentification Windows pour connecter des connexions à SQL Server. P> LI>
sur un serveur Il existe d'autres moyens de protéger les informations d'identification SQL Server, en commençant par limiter l'accès au serveur aux administrateurs autorisés. P> LI>
ul> Microsoft a fait em> améliore sqlconection strong> objet pour prendre en charge une sécurité SecureString pwd = AzureVault.GetSecretStringSecure("ProcessPassword");
SqlCredential = new SqlCredential("Richard", pwd)
connection.Credential = cred;
.NET 4.5 permettra de transmettre un mot de passe en tant que séchage lors de l'utilisation de l'authentification SQL Server: Quoi de neuf dans Ado.net 4.5
Mon opinion est que la sécrétrage est destinée à tout type de communication de secrets de manière sécurisée et non limitée aux API non gérées. Par lee Securstring sont supportés par .NET 4.5. Je travaille personnellement dans les environnements d'ingénierie de support d'entreprise où le support de niveau le plus bas peut avoir accès à certaines données de SQL à ce jour ne sont pas accordés à la connaissance du mot de passe de l'utilisateur SQL. Au lieu de cela, ce secret est crypté avant la main avec un certificat et que le programme est accordé à l'utilisation du certificat mais pas de l'utilisateur.
@Davidburg - Je ne comprends pas ton point. SQLConnection.ConnectionsRing n'utilise toujours pas de sécurité dans .NET 4.5. Si vous pouvez éviter le besoin d'un mot de passe, il s'agit donc d'une meilleure solution, mais ce n'est pas toujours le cas. Et un programme utilisant un certificat d'authentification n'a pas besoin de séchage.
@Joe - Le point est que vous n'avez plus besoin de SQLConnection.ConnectionsString contenant les informations d'identification de l'utilisateur avec le mot de passe, à la place, vous utilisez un objet SQLCredential pour transmettre les informations d'identification dans lesquelles le mot de passe est utilisé mais en tant que sécrétrage. Oui Un certificat est une autre approche totalement différente. SQLCREDential est un changement de pas plus petit changement, car vous pouvez continuer à utiliser un mot de passe.
Attribution d'une valeur de séchage à SQLConnection.ConnectionsTring contournera la sécurité, ce qui le rend inutile. p>
Un sécuretage est destiné à corriger ces problèmes de chaîne normaux, Ref : P>
IMHO Le type de séchage est un patch pour une mise en œuvre de la sécurité de shoddy et le séchage actuellement n'a pas été mis en œuvre dans l'ensemble du cadre, de sorte que ses avantages ne peuvent donc pas être utilisés complètement. P>
J'ai le même problème, je opte pour le cryptage RSA stockant des informations sensibles en mémoire. P>
Une autre solution héberge votre couche d'accès aux données via un service sur le serveur de base de données et le service est exécuté sous le compte système local, qui se connecte à la base de données et sert les données, tandis que l'utilisateur local n'a pas accès à la configuration de service. . p>
Avec une nouvelle version de .NET, la mise en œuvre de Securstring est plus holistique qui rend la réponse originale un peu obsolète.
Oui, vous pouvez et oui, vous devez utiliser SecuRinging pour éviter de laisser le mot de passe s'attarder dans la mémoire claire et ouverte aux attaques. Plutôt que d'utiliser une chaîne de connexion SQL, vous devez utiliser la nouvelle classe SQLCREDential Quelle propriété de mot de passe est une option de séchage. Veuillez vous reporter aux articles ci-dessous pour l'aide. P>
http: //www.codeproject. COM / TIPS / 408901 / STOCKING-VOTRE-Connection-String-Password-in-Secures P>
Apparemment hawkeye 1.2.0 peut montrer des titres ... Alors, quelle est votre question?
Oh - Alors, quel est le point dans Securstrings alors?
Persist Security Info La propriété de la chaîne de connexion peut vous intéresser.