Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi la précompilation peut empêcher l'injection SQL

清浅
Libérer: 2019-05-11 14:55:57
original
5974 Les gens l'ont consulté

La raison pour laquelle la précompilation peut empêcher l'injection SQL : après la précompilation, l'instruction SQL a été analysée, compilée et optimisée par la base de données, et la base de données peut être interrogée sous forme paramétrée, donc même s'il y a des caractères sensibles, le la base de données les traitera comme des attributs. Les valeurs sont traitées à la place des instructions SQL

Pourquoi la précompilation peut empêcher l'injection SQL

Comme nous le savons tous, il existe une fonction de prétraitement dans JDBC en Java. L'un des avantages majeurs. L'un des avantages de cette fonction est qu'elle peut améliorer la vitesse d'exécution, notamment lors de l'utilisation répétée de la base de données. Un autre avantage est d'empêcher l'injection SQL. À proprement parler, elle devrait empêcher la grande majorité des injections SQL. L'utilisation de

est la suivante :

String sql="update cz_zj_directpayment dp"+
 "set dp.projectid = ? where dp.payid= ?";
try {
PreparedStatement pset_f = conn.prepareStatement(sql);
pset_f.setString(1,inds[j]);
pset_f.setString(2,id);
pset_f.executeUpdate(sql_update);
}catch(Exception e){
//e.printStackTrace();
logger.error(e.message());
}
Copier après la connexion

Alors pourquoi peut-il empêcher l'injection SQL et améliorer la sécurité en le traitant comme ceci ? En fait, cela est dû au fait que l'instruction SQL a été précompilée avant l'exécution du programme. Avant la première utilisation de la base de données lors de l'exécution du programme, l'instruction SQL a été analysée, compilée et optimisée par la base de données. plan sera également mis en cache et permettra à la base de données d'utiliser les paramètres. Requête sous une forme standardisée. Lorsque les paramètres sont transmis dynamiquement à PreprareStatement au moment de l'exécution, même s'il y a des caractères sensibles dans les paramètres tels que « 1 = 1 », la base de données le fera. traitez-le comme un paramètre et une valeur d'attribut de champ au lieu d'un SQL. La commande joue ainsi le rôle d'injection SQL !

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!