Maison > Java > javaDidacticiel > Comment empêcher l'injection SQL en Java

Comment empêcher l'injection SQL en Java

青灯夜游
Libérer: 2019-05-06 17:31:14
original
4793 Les gens l'ont consulté

L'injection SQL est l'une des méthodes d'attaque réseau les plus courantes. Il n'exploite pas les bogues du système d'exploitation pour mener des attaques, mais cible la négligence des programmeurs lors de la programmation. Des utilisateurs peu scrupuleux profitent des failles de SQL et utilisent des instructions SQL pour se connecter sans compte ou même falsifier la base de données. L'article suivant vous présentera plusieurs méthodes pour empêcher l'injection SQL en Java. J'espère qu'il vous sera utile.

Comment empêcher l'injection SQL en Java

Le moyen le plus simple d'empêcher l'injection SQL en Java est d'éliminer l'épissage SQL. Les attaques par injection SQL réussissent car une nouvelle logique est ajoutée à l'instruction SQL d'origine. Si PreparedStatement est utilisé à la place de Statement pour exécuter l'instruction SQL et que seuls les paramètres sont saisis, la méthode d'attaque par injection SQL sera inefficace.

Voyons comment empêcher l'injection SQL en Java :

1. Utilisez un ensemble d'instructions précompilé, qui a la capacité intégrée de gérer l'injection SQL. Utilisez simplement Sa méthode setString peut transmettre une valeur :

String sql= "select * from users where username=? and password=?;
PreparedStatement preState = conn.prepareStatement(sql);
preState.setString(1, userName);
preState.setString(2, password);
ResultSet rs = preState.executeQuery();
Copier après la connexion

2. Utilisez des expressions régulières pour remplacer les instructions contenant des guillemets simples ('), des points-virgules (;) et des symboles de commentaire (--) pour empêcher l'injection SQL. Exemple :

public static String SQL(String str)
{
return str.replaceAll(".*([';]+|(--)+).*", " ");
}
userName=SQL(userName);
password=SQL(password);
String sql="select * from users where username='"+userName+"' and password='"+password+"' "
Statement sta = conn.createStatement();
ResultSet rs = sta.executeQuery(sql);
Copier après la connexion

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal