Atténuation des vulnérabilités d'injection SQL dans les applications Java
Pour se protéger contre les attaques par injection SQL, qui peuvent exploiter les vulnérabilités des requêtes de base de données, il est crucial de utiliser des techniques de désinfection appropriées. Considérez l'extrait de code Java suivant :
String insert = "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
Ce code est susceptible d'être attaqué par injection SQL car les entrées de l'utilisateur (nom, adresse, e-mail) sont directement concaténées dans l'instruction SQL sans validation ni nettoyage. Un acteur malveillant pourrait exploiter cela en injectant du code SQL arbitraire, tel que :
DROP TABLE customer;
Pour éviter cela, il est essentiel d'utiliser PreparedStatement au lieu de la concaténation directe de chaînes SQL. PreparedStatement fournit un mécanisme sûr pour exécuter des requêtes paramétrées. Voici un 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();
Ce code révisé utilise la méthode setString pour lier les entrées de l'utilisateur aux paramètres SQL correspondants (représentés par les points d'interrogation dans la chaîne d'insertion). En séparant la requête SQL des entrées utilisateur, elle devient immunisée contre les attaques par injection SQL. Le code malveillant injecté par le pirate informatique sera traité comme une chaîne littérale dans l'instruction SQL, empêchant ainsi toute action nuisible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!