Attention, le contenu cet article est peut-être obsolète !
Comment se protéger simplement des injections SQL en JavaQui dit lecture/écriture dans une base de données dit protection contre les injections SQL. Voici comment se prémunir, en Java...
Les imports nécessaires
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;La protection se fait en créant une requête avec des paramètres à "binder", comme dans les autres languages. Une méthode parmi d'autres, consiste à mettre des points d'interrogations et les remplir plus loin en spécifiant les paramètres dans l'ordre :
//Partons du principe que votre connexion, ouverte, s'appelle laConnexion//Et du principe que vous voulez mettre à un jour l'objet Voiture//Création de la requête de mise à jour
String laRequete = "UPDATE voitures";
laRequete += " SET marque = ?";
laRequete += " , modele = ?";
laRequete += " WHERE id = ?";//Création du statement pour préparer la requête :final PreparedStatement monPreparedStatement = laConnexion.prepareStatement(laRequete );//Attribution des paramètres, dans l'ordre :monPreparedStatement.setString(1, laVoiture.getMarque());
monPreparedStatement.setString(2, laVoiture.getModele());
monPreparedStatement.setString(3, laVoiture.getId()));//Execution de la requêtefinal Integer leResultat = loPreparedStatement.executeUpdate();if (leResultat == null) { //La mise à jour n'a pu se faire
//...
} else { //La mise à jour a été réalisée
LOG.info("--> Nombres de ligne(s) modifiée(s): " + leResultat);
}
monPreparedStatement.close();Très simple en définitive.