Empêcher les attaques par injection SQL dans les programmes Java
P粉328911308
P粉328911308 2023-10-20 20:06:17
0
2
815

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粉328911308
P粉328911308

répondre à tous(2)
P粉194919082

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).

P粉030479054

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal