2010-08-25 5 views
4

J'ai besoin de stocker des informations sensibles dans une table dans SQL Server 2008. Les données sont une chaîne et je ne veux pas que ce soit dans un format lisible par l'homme à quiconque accède à la base de données.Comment stocker des informations sensibles dans SQL Server 2008?

Ce que je veux dire par informations sensibles est une base de données de mots sales/sales. Je dois m'assurer qu'ils ne flottent pas dans des tables et des fichiers SQL. Dans le même temps, je devrais être en mesure d'effectuer des opérations comme "=" et "j'aime" sur les chaînes.

Jusqu'ici je peux penser à deux options; cela fonctionnera-t-il ou quelle est la meilleure option?

  1. chaîne de magasin (varchar) sous forme de données binaires (blob)
  2. magasin dans un format crypté, comme nous le faisons habituellement avec des mots de passe.
+0

Avez-vous regardé http://msdn.microsoft.com/en-us/library/cc278098(SQL.100).aspx –

Répondre

2

Une troisième option, qui peut être la plus appropriée, est simplement de ne pas stocker ces valeurs dans la base de données particulière. Je dirais qu'il est probablement plus approprié de les stocker ailleurs, puisque vous n'allez probablement pas vous ENGAGER contre la table des mots sensibles.

Sinon, vous probablement voulez utiliser la suggestion de Conrad Frix du support de cryptage intégré de SQL Server. La raison pour laquelle je dis cela est parce que vous dites both = et LIKE doivent fonctionner à travers vos données. Lorsque vous hachez une chaîne en utilisant un algo de hachage tel que SHA/MD5/etc., Les résultats n'obéiront pas à la sémantique LIKE du langage humain.

Si l'égalité exacte (=) est suffisante (c'est-à-dire que vous n'avez pas vraiment besoin de faire des requêtes LIKE), vous pouvez utiliser une fonction cryptographique pour sécuriser le texte. Mais gardez à l'esprit qu'une fonction de hachage unidirectionnelle vous empêcherait d'obtenir une liste de chaînes "non hachées" - si vous avez besoin de le faire, vous devez utiliser une algo de chiffrement où le déchiffrement est possible, comme AES.

1

Si vous utilisez rot13, vous pouvez toujours utiliser = et LIKE. Cela s'applique également à toute méthode de stockage autre qu'une base de données SQL, si la prévention des vues accidentelles/accidentelles (y compris l'indexation du moteur de recherche, si la liste est publique) est importante.

+0

Pourquoi le downvote? –

+2

Refusée. Je pense que ROT13 est une solution parfaitement simple à ce problème. L'obscurité (par opposition au cryptage) est raisonnable parce que les données ne sont pas privées, seulement "offensantes". ROT13 est simple, quasi-standard, et conserve la compatibilité avec = et LIKE, comme l'OP l'a demandé. – daveidmx

Questions connexes