2010-03-29 4 views
0

Je crée une application VB.NET pour une classe Calculus en tant que petit projet parallèle. Il nécessite des profils utilisateur enregistrés localement dans les fichiers principaux du programme. J'utilise 2 classes distinctes pour accéder aux profils d'utilisateurs en ce moment.Comment enregistrer des données de profil utilisateur localement et de manière sécurisée dans VB.NET?

La première classe est appelée Config et est utilisée pour manipuler le fichier de configuration de base qui contient les chemins, les paramètres et les noms de profils de documents de cours.

La deuxième classe est appelée Utilisateur et est utilisée pour charger des profils utilisateur à partir d'un répertoire de profil dans lequel les données utilisateur sont enregistrées dans des fichiers texte distincts.

La classe Config récupère les noms d'utilisateur et les chemins de fichier texte du profil utilisateur. Ce chemin de fichier texte est ensuite transmis à un objet Utilisateur qui peut ensuite charger et interpréter le fichier. Désolé, si c'était un peu trop instructif, mais j'ai pensé que cela aiderait à expliquer les choses.

Ma question est de savoir comment formater le fichier de configuration et les fichiers utilisateur afin qu'ils soient suffisamment sécurisés pour que quelqu'un ne puisse pas facilement récupérer ou manipuler des données?

Voici un échantillon de la façon dont je lis les fichiers texte:

Dim userList() As String = {Nothing} 
If My.Computer.FileSystem.FileExists(configPath + "config.cfg") Then 
    Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(configPath + "config.cfg") 
     MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited 
     MyReader.Delimiters = New String() {"="} 
     Dim currentRow As String() 
      'Loop through all of the fields in the file.' 
      'If any lines are corrupt, report an error and continue parsing.' 
     While Not MyReader.EndOfData 
      Try 
       currentRow = MyReader.ReadFields() 
        'interpret data tokens delimited by "=" and new line character here' 
      Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException 
       MsgBox("Line " & ex.Message & " is invalid. Skipping") 
      End Try 
     End While 
    End Using 
End If

Le problème ne lit pas le fichier texte, je ne suis pas sûr comment le sécuriser. Je pensais d'abord analyser le fichier entier pour le traduire de «crypté» en texte, puis l'enregistrer en tant que fichier temporaire que je passerais au code ci-dessus, puis supprimer le fichier immédiatement après. En ce qui concerne le cryptage (est-ce le bon mot pour cela?) Le fichier, je pourrais peut-être décaler chaque caractère en utilisant une clé que je sauvegarderais au début du fichier.

Je suis plus intéressé à enregistrer le fichier en toute sécurité, puis se soucier de ce qu'il pourrait être une surexploitation. C'est plus de pratique que je suppose.

Répondre

1

Eh bien ... .NET comprend beaucoup de classes de sécurité et de chiffrement. Je commencerais votre recherche en regardant dans l'espace de noms System.Security.Cryptography.

Si vous avez besoin d'aide pour implémenter une méthode spécifique parmi les options disponibles, faites-le nous savoir. En guise de remarque, vous devriez pouvoir gérer tous vos accès aux fichiers à partir de l'espace de noms System.IO. Essayez de rester à l'écart de l'espace de noms Microsoft.VisualBasic, car il n'y a plus de bonnes pratiques.

-edit: Typo.

1

Il y a un bon exemple sur la façon de crypter/décrypter des fichiers en utilisant vb.net sur codeproject.com http://www.codeproject.com/KB/security/EncryptFile.aspx

+0

wow merci de poster cet article! Je viens de le lire ... Je pense que je vais essayer mon propre type de cryptage 'rapide'. Mais les techniques qu'il utilisait étaient très instructives. Merci – Dooms101

Questions connexes