Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Java : Protéger une requête SQL contre les injections

Article posté le 10-06-2015 dans la catégorie Java

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


Tweet
comments powered by Disqus