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ête
final 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.