IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

[C# et SQl Server] Encrypter et décrypter des données avec AES - Rijndael ?


Sujet :

Sécurité

  1. #1
    Candidat au Club
    Femme Profil pro
    En formation pro
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En formation pro

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [C# et SQl Server] Encrypter et décrypter des données avec AES - Rijndael ?
    Bonjour !

    Voilà pour un projet de grande envergure je dois réussir à obtenir des données personnelles cryptées dans mes bases de données SQl Server Management Studio avec un système de clef de cryptage implanté dans mon programme C#, le tout la avec méthode d'encrytage AES Rijndal.

    Pour faire des tests, j'ai créé un micro programme très rapide en windows Form avec une partie connexion (champ pseudo, champ mot de passe et le bouton pour se connecter), une partie inscription avec champ pseudo, champ mot de passe et d'autres champs, et le bouton qui va bien, un champ où un message s'affiche pour dire si les opérations ont réussi ou non, puis un bouton "Crypter la base de donnée.

    Ce dernier bouton devrait me servir, à un simple click, à crypter toutes les données en clair de ma base. Après, le soucis est que je ne connais rien au cryptage, je ne sais pas où mettre mes différentes fonctions pour encrypter et décrypter.

    Autre soucis, moi qui ai surtout fait du Web, est que je ne sait pas du tout comment, à la connexion, afficher dans mon champ message le pseudo, nom et prénom de la personne pour m'assurer que les données soient bien lues...

    Ce dont j'ai besoin :

    - Que grâce au bouton "Crypter la base de donnée", les données en clair déjà insérées dans ma base soient cryptées
    - Que l'encryptage ne pose pas de soucis pour se connecter
    - Qu'à la connexion, je puisse afficher le pseudo, nom et prénom de mon bonhomme en clair dans le champ message
    - Qu'un ajout sur le bouton d'inscription encrypte directement les données dans ma base dès l'inscription, pour que les nouvelles inscriptions ne passent jamais en clair dans ma base de donnée.

    Je me doute que ça doit être assez simple, mais je ne maîtrise pas du tout ces aspects là, donc j'ai vraiment besoin de votre aide ^^'

    Voici le bout de code déjà fait :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    
    namespace Test
    {
    
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                
            }
    
            //Bouton d'inscription
            private void BouttonInscription_Click(object sender, EventArgs e)
            {
                
                SqlConnection con = new SqlConnection(@"Data Source=GFI520193;Initial Catalog=Test;Integrated Security=True");
                SqlDataAdapter sda = new SqlDataAdapter("INSERT INTO Table1 (Pseudo, Mdp, Nom, Prenom, Mail, Telephone) VALUES ('" + TextPseudoInscription.Text + "','" + TextMdpInscription.Text + "','" + TextNom.Text + "','" + TextPrenom.Text + "','" + TextMail.Text + "','" + TextTelephone.Text + "')", con);
                DataTable dt = new DataTable();
                sda.Fill(dt);
    
                
                    TextMessage.Text = "Vous êtes inscrit !";
                
            }
    
            //Bouton de connexion
            private void BouttonConnexion_Click(object sender, EventArgs e)
            {
                SqlConnection con = new SqlConnection(@"Data Source=GFI520193;Initial Catalog=Test;Integrated Security=True");
                SqlDataAdapter sda = new SqlDataAdapter("Select Count(*) From Table1 where Pseudo='" + TextPseudo.Text + "' AND Mdp='" + TextMdp.Text + "'", con);
                DataTable dt = new DataTable();
                sda.Fill(dt);
    
                if (dt.Rows[0][0].ToString() == "1")
                {
                    TextMessage.Text = "Vous êtes connecté !";
                }
                else
                {
                    TextMessage.Text = "Votre Pseudo ou Mot de passe est invalide";
                }
            }
            
            
        }    
    }
    Voilà, merci d'avance pour votre aide ! ^^

    (PS : Je ne sais pas du tout si je poste mon message dans la rubrique la plus appropriée, c'est mon second message ici ^^')
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 466
    Points : 632
    Points
    632
    Par défaut
    Bonjour,

    Pour ce qui est du chiffrement il te faut soit utiliser les fonctions de chiffrement présente sur ta SGBD et de ce fait avec une clef de chiffrement commune à toute la base.
    Soit dans l'autre cas ou tu souhaites chiffrer par utilisateur faire un post traitement avant ta requête SQL ou tu chiffres avec une passphrase saisit au login ou après (je mettrait cela après l'authentification et de ce fait laisserai une partie "login"|"hashpassword" en plaintext). Cette passphrase ne doit pas être stocké dans ta database et passer sur le réseau au travers de ssl, pour ce qui est de la persistance c'est a étudier.

    Mais la question vraiment importante c'est: de quoi souhaites tu proteger ces données ?

    En effet si c'est en cas de piratage (injection ? ) je me consacrerai plus sur les bonnes pratique plutot qu'une sécu par chiffrement dans un premier temps.

    Je ne peux que te conseiller de ne pas faire tes requêtes SQL de cette maniere, en effet tu es typiquement vulnérable à de l'injection SQL. Renseigne toi du coté des requêtes préparée (concrètement en l’état je t'extrait toute ta database en 5 min sans avoir d’accès légitime).

    Bien cordialement

Discussions similaires

  1. Deploiment de SQL SERVER et la base des données avec oneClick setup
    Par sdoula dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 24/04/2010, 10h26
  2. [SQL Server 2005 [Express]] récupérer des données
    Par le_ben dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/08/2007, 17h11
  3. [MS SQL server express 2005] exportation des données
    Par backfire dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/02/2007, 15h58
  4. Réponses: 5
    Dernier message: 06/02/2007, 13h46
  5. [SQL Server Management Express] Sauvegarde des données
    Par basnifo dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 02/06/2006, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo