Malheureusement, j'ai des mots de passe en clair dans une base de données. Je veux passer ces valeurs de texte en clair aussi peu que possible pour, disons, des comparaisons et des mises à jour. À cette fin, j'essaye de créer une vue de ma table d'utilisateurs qui exclut les mots de passe en clair et fournit à la place une valeur hachée de ce mot de passe.Puis-je concaténer une colonne virtuelle dans une vue?
Voici mon opinion actuelle SQL Server, ce qui ne fonctionne pas:
SELECT CAST(CAST(32768 * RAND() AS INT) AS NVARCHAR) AS PasswordSalt
HashBytes('SHA1', PasswordSalt + u.Password) AS PasswordHash
FROM dbo.Users AS u
Je serais heureux d'entendre parler des alternatives à cette approche, mais sinon le problème semble être concaténer la colonne virtuelle PasswordSalt avec .. rien. Par exemple, la vue simple suivante fonctionne:
SELECT u.Login AS Column1, u.Login + 'b' AS Column2
mais celui-ci ne fonctionne pas:
SELECT u.Login AS Column1, Column1 + 'b' AS Column2
L'erreur que je reçois de Management Studio est
nom de colonne non valide « Column1 '.
Merci d'avance pour toute idée de ce que je fais mal!
Vous pouvez simplement chiffrer la colonne (SQL Server 2005+): http://msdn.microsoft.com/en-us/library/ms179331% 28SQL.90% 29.aspx –
La seule façon de reproduire l'erreur était que la colonne 1 n'existait pas –
J'ai choisi un hachage pour m'assurer que la transformation est reproductible par les consommateurs sans qu'ils puissent récupérer 'u.Password'. Je crois que cela exclut le cryptage. – ladenedge