Maison > base de données > tutoriel mysql > Comment PreparedStatements peut-il empêcher l'injection SQL dans les applications Java ?

Comment PreparedStatements peut-il empêcher l'injection SQL dans les applications Java ?

Patricia Arquette
Libérer: 2025-01-06 08:24:39
original
637 Les gens l'ont consulté

How Can PreparedStatements Prevent SQL Injection in Java Applications?

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 + "');";
Copier après la connexion

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;
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal