[.net2] securestring, string cryptée en mémoire

Soyez le premier à donner votre avis sur cette source.

Vue 7 444 fois - Téléchargée 407 fois

Description

Ce code est juste là pour un but pédagogique (c'est le but de Codes-Sources je croi :p)
donc ya pas de capture (ni d'exe) car le code ne fait rien d'extraordinaire c'est juste un boite de dialogue de connection

Sauf que dans une boite de dialogue ordinaire lorsque l'on tappe le mot de passe, dans le meilleur des cas on met une "*" dans le PasswordChar de la textbox et puis basta !!! alors qu'il est très facile de faire disparaitre cette * et voir le mot de passe en clair

mon code analyse chaque frappe de clavier sur la textbox de mot de passe et stock le caractère (à la suite des autres) dans une variable en memoire et renvoie dans la textbox une * (avec le PasswordChar="") comme ca plus moyen de lire le mot de passe... direct dans la textbox car meme en faisant msgbox(txtMotdePasse.text), bah on verra que des etoiles !!!

Jusque là source nulle, qui sert à rien, y'en a des milliers sur CS, ..., etc
et bien non !!! une source comme celle y'en a ... 0 sur VBFrance (et meme 0 sur tout CS tous languages confondus)

Et que c'est là que le .Net framework 2 intervient !!! avec sa securité et avec une classe que personne (ou presque) ne connait !
au lieu mettre betement les caractères les uns à la suite des autres dans une simple "String" (qui est lisible en memoire directement en clair) et bah on va crypter cette chaine de caractère, qui ça ?? nous ?? non, le framework !!!
A l'aide d'une SecureString, qui est une string presque normal sauf qu'elle est cryptée en memoire automatiquement (pas besoin de clé de cryptage et tous le tralala, le framework s'occupe de tous)

Le seul (peut etre) inconvenient c'est que l'on ne peut pas faire :
Dim mSecureStr as SecureString
mSecureStr = TextBox1.Text

Non, il faut entrer les caractères 1 par 1...

Le code est très commenté pour bien tous expliquer

voila !!! (commentaire + notes...)

VBSorcier

PS : voir notes finales

Source / Exemple :


'LE CODE DANS LES GRANDES LIGNES, LE PRINCIPALE

Imports System.Security                 'pour pouvoir déclarer la SecureString
Imports System.Runtime.InteropServices  'Pour pouvoir aller chercher le pointeur en memoire

    Private mPwd As New SecureString    'déclarée en tant que "String Sécurisé"

'Ecriture dans la SecureString, insére 1par1 chaque caractère du texte et crypte au fur et à mesure
    For Each mChar As Char In "Source de VBSorcier"
       mPwd.AppendChar(mChar)
    Next

'Lecture de la valeur de la SecureString
    Dim mPointeur As IntPtr = Marshal.SecureStringToBSTR(mPwd)      'Pour aller chercher le pointeur renvoyant vers la securestring
    lbSecureString.Text = Marshal.PtrToStringUni(mPointeur)         'Va chercher la valeur de la securestring

Conclusion :


Code dans les grandes lignes...

Le zip est plus complet car il montre comment bien gérer toute les frappes dans une textbox pour bien modifier la SecureString en conséquence (en prennant compte de la touche "BackSpace" et "Suppr")

Voila, c'est fini !!!

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
102
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
29 avril 2007

bon alors dans la serie, fonction inconnue de .net 2 je propose aujourd'hui :
les certificats

pour ceux que ca intérresse :

http://www.vbfrance.com/code.aspx?ID=37468

et puis la meme mais en C#
http://www.csharpfr.com/code.aspx?ID=37466

a+
VBSorcier
Messages postés
102
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
29 avril 2007

c'est clair que les fonctionnalitées telle que celle là, on ne les trouvent pas un matin en se reveillant et disant "cette nuit j'ai révé du type Securestring de la classe Security du .net framework 2 à quoi sert donc ce truc, tiens j'vai faire une source pour CS" !!!

j'avais entendu parler de "securestring" lors des DevDays2005 (auxquels je n'ai pu assister => donc je me suis fait tous les webcasts Microsoft des DevDays2005 (environ 10h de video))... et c'est là qu'ils introduisaient tout les nouvelles fonctionalité de .net2 et SQL Server 2005 (y'avait aussi les e-demos)


voila

PS : ca me generai pas que MS m'appel :p
Messages postés
6
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
28 avril 2006

Quand on cherche une fonctionnalité, on met souvent beaucoup de temps pour trouver les syntaxes.
Microsoft devrait t'embaucher pour rédiger des exemples dans leur doc qui en manque cruellement. Si j'avais trouvé ce soft dans la doc j'aurais gagné beaucoup de temps.
La remarque de Willi est juste.
Merci
Messages postés
102
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
29 avril 2007

Oué c'est vrai j'aurais pus le mettre, mais là, c'était surtout pour bien montrer comment la modifier (inserer/supprimer un caractère là ou l'on veux, lecture), surtout que dans ce code le texte (mot de passe) est ammené à etre modifié plus que dans un autre car en je pense que le plus souvent le code rencontré sera :

Dim MySecureStr as SecureString
For Each mChar as Char In "Mon Texte à sécuriser"
MySecureStr.AppendChar(mChar)
Next
donc pas besoin de InsertAt et RemoveAt

Merci à toi de l'avoir rajouté pour ceux qui voudrais compléter le code :p

a+
VBSorcier
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Pour compléter ta source, utilise la méthode MakeReadOnly pour interdire toutes modifications accidentels ou malveillantes.

Bonne continuation.
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.