Comment rendre une verification de connectionbeaucoup plus rapide ?

[Résolu]
Signaler
Messages postés
61
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
5 avril 2011
-
Messages postés
61
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
5 avril 2011
-
Bonjour,
j'aimerais savoir comment faire une vérification beaucoups plus rapide, car ceci mais tout de même un certain temps lorsqu'il sagit de vérifier que l'on a à faire à un fournisseur.
Le code ci dessous n'est pas compliqué du tout mais très long à l'exécution.
Si qu'elqu'un pouvait m'aider.
Merci d'avance.

OdbcConnection con;

   void BoutonValider(object sender, EventArgs e)
     {
         OdbcCommand command;
         string sql;
         con = new OdbcConnection(ConfigurationSettings.AppSettings["connexion"]);
         con.Open();

         Label1.Text="";
         Label2.Text="";
         Label3.Text="";
         Label4.Text="";
         if(TextBox1.Text.Length 0 || TextBox2.Text.Length 0)
         {
           if (TextBox1.Text.Length == 0)
           {
              Label2.Text="* Veuillez saisir un login";
           }

           if (TextBox2.Text.Length == 0)
           {
               Label3.Text="* Veuillez saisir un mot de pass";
           }
         }

         else
         {           sql "SELECT nomU, mdpU, prenomU FROM `utilisateur` WHERE nomU '" + TextBox1.Text + "' AND mdpU = '" + TextBox2.Text + "'";
           command = new OdbcCommand(sql, con);
           command.ExecuteNonQuery();

           if(command.ExecuteNonQuery() > 0)
           {

               DataSet data = new DataSet();
               OdbcDataAdapter adapter = new OdbcDataAdapter(sql, con);
               adapter.Fill(data);
               DataTable maTable = data.Tables[0];

               foreach (DataRow row in maTable.Rows)
               {
                   string r0 = (string)row[0];
                   string r1 = (string)row[1];
                   string r2 = (string)row[2];
                   if(TextBox1.Text.ToUpper() r0.ToUpper() && TextBox2.Text.ToUpper() r1.ToUpper())
                   {

                       Label1.Text += "Bienvenu " + r2 + " " + r0 + " !";

                   }
               }
           }
           else
           {
           sql "SELECT nomC, mdpC FROM `client` WHERE nomC '" + TextBox1.Text + "' AND mdpC = '" + TextBox2.Text + "'";
           command = new OdbcCommand(sql, con);
           command.ExecuteNonQuery();

           if(command.ExecuteNonQuery() > 0)
           {

               DataSet data = new DataSet();
               OdbcDataAdapter adapter = new OdbcDataAdapter(sql, con);
               adapter.Fill(data);
               DataTable maTable = data.Tables[0];

               foreach (DataRow row in maTable.Rows)
               {
                   string r0 = (string)row[0];
                   string r1 = (string)row[1];
                   if(TextBox1.Text.ToUpper() r0.ToUpper() && TextBox2.Text.ToUpper() r1.ToUpper())
                   {
                       Label1.Text += "Bienvenu client : " + r0 + " !";
                   }
               }
           }
           else
           {           sql "SELECT nomF, mdpF FROM `fournisseur` WHERE nomF '" + TextBox1.Text + "' AND mdpF = '" + TextBox2.Text + "'";
           command = new OdbcCommand(sql, con);
           command.ExecuteNonQuery();

           if(command.ExecuteNonQuery() > 0)
           {
               DataSet data = new DataSet();
               OdbcDataAdapter adapter = new OdbcDataAdapter(sql, con);
               adapter.Fill(data);
               DataTable maTable = data.Tables[0];

               foreach (DataRow row in maTable.Rows)
               {
                   string r0 = (string)row[0];
                   string r1 = (string)row[1];
                   if(TextBox1.Text.ToUpper() r0.ToUpper() && TextBox2.Text.ToUpper() r1.ToUpper())
                   {
                      Label1.Text += "Bienvenu fournisseur : " + r0 + " !";
                   }
               }
           }
           else
           {
                Label4.Text += "erreur : Mauvais login ou mot de pass";
           }
         }
       }
        con.Close();
  }

}
A voir également:

5 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Bonsoir,

mais que se passe t'il si je met la valeur '; drop table utilisateur dans la textbox1 ... on le répétera jamais assez mais la sécurité c'est tous les jours ... utilises des requetes paramétrés.

sinon la question est vague, as tu identifié la ligne qui est longue ? il n'attend pas simplement un timeout ? dans ce cas doit falloir modifier le paramètre dans la connectionstring

<hr />Cyril - MSP - MCTS ASP.net & SQL
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
j'espere que c'est une blague ?

tu as une ENORME faille de sécurité là, tu devrais vraiment le corriger et utiliser les requetes paramétrés, tu devrais aussi t'utiliser les RequiredFieldValidator qui t'évite de tester manuellement si le champ est null ou non ...

<hr />Cyril - MSP - MCTS ASP.net & SQL
Messages postés
61
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
5 avril 2011

si je tape drop table utilisateur :
j'ai le Label2 qui affiche : * Veuillez saisir un mot de pass
et si je lui met un mot de pass j'ai le Label4 qui affiche : erreur : Mauvais login ou mot de pass

et dans mon web.config j'ai ca en gros :

(les * sont des noms non comunniqués ^^ )

Néanmoins, c'est peut être le poste sur lequel je travail qui est lent car cela va 3 fois plus dès lors ou je suis chez moi sur ma machine ^^
Messages postés
61
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
5 avril 2011

ok
je vais voir ca mais j'ai jamais fait de C# au part avant
Messages postés
61
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
5 avril 2011

Donc oui j'ai bien un gros problème  sécurité au niveau de la vulnérabilité pour les "injection sql" directement dans les textbox.

Je me suis documenté la dessus et il n'y à pas de problème je ferais des requêtes paramètrés.

Néanmoins j'ai demandé à mon responsable de stage, et je m'occuperais de ca si j'ai le temps à la fin ;)