recherche

Maison  >  Questions et réponses  >  le corps du texte

Empêcher les attaques par injection SQL dans les programmes Java

Je dois ajouter une instruction à mon programme Java pour mettre à jour la table de la base de données :

String insert =
    "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";

J'ai entendu dire que cela pouvait être exploité via une injection SQL, par exemple :

DROP TABLE customer;

Mon programme a une interface graphique Java et toutes les valeurs de nom, d'adresse et d'e-mail sont ajoutées de Jtextfields 检索。我想知道黑如何将以下代码(DROP TABLE customer;) à mon instruction d'insertion et comment puis-je empêcher cela.

P粉328911308P粉328911308447 Il y a quelques jours855

répondre à tous(2)je répondrai

  • P粉194919082

    P粉1949190822023-10-21 12:11:28

    Par exemple :

    name = "'); DROP TABLE customer; --"

    insérera cette valeur dans insert  :

    INSERT INTO customer(name,address,email)     VALUES(''); DROP TABLE customer; --"','"+addre+"','"+email+"');

    Utilisez des instructions préparées et des paramètres SQL (exemple "voler" de Matt Fellows) :

    String insert = "INSERT INTO customer(name,address,email) VALUES(?, ?, ?);";
    PreparedStament ps = connection.prepareStatment(insert);

    Analysez également les valeurs de ces variables et assurez-vous qu'elles ne contiennent aucun caractère non autorisé (tel que ";" dans le nom).

    répondre
    0
  • P粉030479054

    P粉0304790542023-10-21 09:25:32

    Vous devez utiliser PreparedStatement. Par exemple

    String insert = "INSERT INTO customer(name,address,email) VALUES(?, ?, ?);";
    PreparedStatement ps = connection.prepareStatement(insert);
    ps.setString(1, name);
    ps.setString(2, addre);
    ps.setString(3, email);
    
    ResultSet rs = ps.executeQuery();

    Cela empêchera les attaques par injection.

    La façon dont un pirate informatique l'insère est si la chaîne que vous insérez provient d'une entrée quelque part - comme un champ de saisie sur une page Web ou un champ de saisie sur un formulaire dans une application ou similaire.

    répondre
    0
  • Annulerrépondre