Bonjour,
J'ai crée une application C# qui est un forum.
Un utilisateur est invité à saisir son username + mot de passe via une interface graphique.
Volontairement, j'ai choisi de stocker le mot de passe au format Varbinary car il doit être crypté quand il est inséré dans la BDD.
Ces données sont insérées ensuite dans la BDD sql serveur dans la table Forum_Registration
Voici le code d'insertion des données
Au niveau BDD, j'ai crée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 protected void Btn_Registration_Click(object sender, EventArgs e) { try { using (SqlConnection connexion = new SqlConnection(ConnectionStrings.FrCon)) { //on remplace txtusername.Text et txtpassword.Text , txtfullname.Text , @rbl_gender.SelectedItem.Text,txtdob.Text,txtemailid.Text par le nom d'un paramètre sqlquery = "Insert into Forum_Registration values (@username , @password)"; sqlCommand = new SqlCommand(sqlquery, connexion); //création et déclaration des paramètres @username, @password,@fullname,@rbl_gender,@txtdob,@emailid sqlCommand.Parameters.Add(new SqlParameter("@username", SqlDbType.NVarChar)); //insérer un message de saisie selon une expression régulière sqlCommand.Parameters.Add(new SqlParameter("@password", SqlDbType.VarBinary)); //attribution de valeur aux paramètres sqlCommand.Parameters["@username"].Value = txtusername.Text; //pour l'instant je ne crypte et décrypte qu'en appelant des procédures sql serveur //appel de la procédure stockée sqlCommand.Parameters["@password"].Value = txtpassword.Text; //ouverture de la connexion connexion.Open(); sqlCommand.ExecuteNonQuery(); }//fin de using }//fin de try
-une procédure de création de clef symétrique
Voici le code du trigger d'insertion du mot de passe crypté dans la BDD
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4CREATE SYMMETRIC KEY MA_CLEF WITH ALGORITHM = AES_256 ENCRYPTION BY PASSWORD = 'P@ssw0rd !';
-une vue sql dont voici le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CREATE TRIGGER E_I_IU_Forum_Registration ON [dbo].[V_Forum_Registration] INSTEAD OF INSERT, UPDATE AS BEGIN IF NOT EXISTS(SELECT * FROM deleted) INSERT INTO Forum_Registration(username, password) SELECT username, ENCRYPTBYKEY(KEY_GUID('MA_CLEF'), password) FROM inserted; ELSE UPDATE FR SET password = ENCRYPTBYKEY(KEY_GUID('MA_CLEF'), i.password) FROM inserted AS i JOIN Forum_Registration AS FR ON i.username = FR.username; END
Cette création de vue implique que les données soient au format Varbinary dans la BDD, ce qui n'est pas le cas .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE VIEW [dbo].[V_Forum_Registration] AS SELECT username, CAST(DECRYPTBYKEY(password) AS VARCHAR(100)) AS password FROM [dbo].[Forum_Registration];
Je vous remercie beaucoup de votre aide pour résoudre cette situation bloquante.
Bien cordialement.
new_wave
Partager