En savoir plus sur l'injection SQL et comment y remédier
Recommandé (gratuit) : Tutoriel SQL
L'injection SQL fait référence à l'intrusion de données saisies par l'utilisateur par le Web applications Il n'y a aucun jugement sur la légalité ou le filtrage laxiste. Les attaquants peuvent ajouter des instructions SQL supplémentaires à la fin des instructions de requête prédéfinies dans l'application Web pour réaliser des opérations illégales à l'insu de l'administrateur, trompant ainsi la base de données. Le serveur effectue des requêtes arbitraires non autorisées. obtenir en outre des informations de données correspondantes.
1. Cas d'injection SQL
Simulez un cas d'injection SQL de connexion utilisateur L'utilisateur saisit le nom d'utilisateur et le mot de passe sur la console, puis utilise la concaténation de chaînes de déclaration. Implémentez la connexion utilisateur.
1.1 Créez d'abord la table utilisateur et les données dans la base de données
-- 创建一张用户表 CREATE TABLE `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(20), `password` VARCHAR(50), PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; -- 插入数据 INSERT INTO users(username,`password`) VALUES('张飞','123321'),('赵云','qazxsw'),('诸葛亮','123Qwe'); INSERT INTO users(username,`password`) VALUES('曹操','741258'),('刘备','plmokn'),('孙权','!@#$%^'); -- 查看数据 SELECT * FROM users;
1.2 Écrire un programme de connexion
import java.sql.*; import java.util.Scanner; public class TestSQLIn { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=UTF-8"; Connection conn = DriverManager.getConnection(url,"root","123456"); //System.out.println(conn); // 获取语句执行平台对象 Statement Statement smt = conn.createStatement(); Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String userName = sc.nextLine(); System.out.println("请输入密码:"); String password = sc.nextLine(); String sql = "select * from users where username = '" + userName + "' and password = '" + password +"'"; //打印出SQL System.out.println(sql); ResultSet resultSet = smt.executeQuery(sql); if(resultSet.next()){ System.out.println("登录成功!!!"); }else{ System.out.println("用户名或密码错误,请重新输入!!!"); } resultSet.close(); smt.close(); conn.close(); } }
1.3 Connexion normale
Après avoir entré le nom d'utilisateur et le mot de passe corrects, il affiche "Connexion réussie"
1.4 Échec de connexion
Lors de la saisie d'un nom d'utilisateur ou d'un mot de passe incorrect, le message "Le nom d'utilisateur ou le mot de passe est incorrect, veuillez le ressaisir"
1.5 Simulation d'injection SQL
La chaîne concaténée contient ou '1'='1', qui est une condition constante, donc même si le l'utilisateur et le mot de passe précédents n'existent pas, tous les enregistrements seront également supprimés, donc "Connexion réussie" s'affiche
Erreur de syntaxe SQL 1.6
En utilisant l'épissage, SQL apparaîtra également des erreurs de syntaxe et d'autres erreurs, telles que
2. À l'aide de la méthode Statement, les utilisateurs peuvent modifier le texte original via l'épissage de chaînes. La véritable signification de SQL entraîne un risque d'injection SQL. Pour résoudre l'injection SQL, vous pouvez utiliser l'objet de prétraitement PreparedStatement au lieu de Statement pour le traitement.
1.1 Écrire un nouveau programme
import java.sql.*; import java.util.Scanner; public class TestSQLIn { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=UTF-8"; Connection conn = DriverManager.getConnection(url,"root","123456"); //System.out.println(conn); // 获取语句执行平台对象 Statement // Statement smt = conn.createStatement(); Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String userName = sc.nextLine(); System.out.println("请输入密码:"); String password = sc.nextLine(); String sql = "select * from users where username = ? and password = ? "; // System.out.println(sql); // ResultSet resultSet = smt.executeQuery(sql); PreparedStatement preparedStatement = conn.prepareStatement(sql); preparedStatement.setString(1,userName); preparedStatement.setString(2,password); ResultSet resultSet = preparedStatement.executeQuery(); if(resultSet.next()){ System.out.println("登录成功!!!"); }else{ System.out.println("用户名或密码错误,请重新输入!!!"); } preparedStatement.close(); resultSet.close(); // smt.close(); conn.close(); } }
2.3 Nom d'utilisateur et mot de passe incorrects
Lorsque le nom d'utilisateur ou le mot de passe est mal saisi, le message "Le nom d'utilisateur ou le mot de passe est incorrect, veuillez le ressaisir"
2.4 Simuler l'injection SQL
Selon la situation précédente, écrivez l'injection SQL Après le test, l'injection SQL ne se produira plus.
2.5 Simulation des erreurs de syntaxe SQL
Après avoir utilisé la classe de prétraitement, la saisie de contenu avec des guillemets simples ou doubles ne fonctionnera pas SQL des erreurs de syntaxe réapparaîtront
3.Résumé
Les principales différences entre Statement et PreparedStatement sont les suivantes :
L'instruction est utilisée pour exécuter des instructions SQL statiques. Lors de l'exécution, une instruction SQL préparée doit être spécifiée- PrepareStatement est un objet d'instruction SQL précompilé. peut contenir des paramètres dynamiques "?", et la valeur du paramètre peut être définie dynamiquement pour "?" pendant l'exécution
- PrepareStatement peut réduire le nombre de compilations et améliorer les performances de la base de données
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nginx est un serveur Web rapide, performant et évolutif, et sa sécurité est un problème qui ne peut être ignoré dans le développement d'applications Web. Surtout les attaques par injection SQL, qui peuvent causer d’énormes dégâts aux applications Web. Dans cet article, nous verrons comment utiliser Nginx pour empêcher les attaques par injection SQL afin de protéger la sécurité des applications Web. Qu’est-ce qu’une attaque par injection SQL ? L'attaque par injection SQL est une méthode d'attaque qui exploite les vulnérabilités des applications Web. Les attaquants peuvent injecter du code malveillant dans les applications Web

0x01 Préface Présentation L'éditeur a découvert un autre double débordement de données dans MySQL. Lorsque nous obtenons les fonctions dans MySQL, l'éditeur s'intéresse davantage aux fonctions mathématiques. Elles doivent également contenir certains types de données pour enregistrer les valeurs. L'éditeur a donc exécuté un test pour voir quelles fonctions provoqueraient des erreurs de débordement. Puis l'éditeur a découvert que lorsqu'une valeur supérieure à 709 est passée, la fonction exp() provoquera une erreur de débordement. mysql>selectexp(709);+-----------------------+|exp(709)|+---------- - -----------+|8.218407461554972

Notes de développement de Laravel : méthodes et techniques pour empêcher l'injection SQL Avec le développement d'Internet et les progrès continus de la technologie informatique, le développement d'applications Web est devenu de plus en plus courant. Au cours du processus de développement, la sécurité a toujours été une question importante que les développeurs ne peuvent ignorer. Parmi eux, la prévention des attaques par injection SQL est l’un des problèmes de sécurité qui nécessite une attention particulière lors du processus de développement. Cet article présentera plusieurs méthodes et techniques couramment utilisées dans le développement de Laravel pour aider les développeurs à prévenir efficacement l'injection SQL. Utilisation de la liaison de paramètres La liaison de paramètres est Lar

Conseils de programmation PHP : Comment prévenir les attaques par injection SQL La sécurité est cruciale lors de l'exécution d'opérations de base de données. Les attaques par injection SQL sont une attaque réseau courante qui exploite la mauvaise gestion par une application des entrées utilisateur, entraînant l'insertion et l'exécution de code SQL malveillant. Pour protéger notre application contre les attaques par injection SQL, nous devons prendre quelques précautions. Utiliser des requêtes paramétrées Les requêtes paramétrées constituent le moyen le plus simple et le plus efficace de prévenir les attaques par injection SQL. Cela fonctionne en comparant les valeurs saisies par l'utilisateur avec une requête SQL

Présentation de la détection et de la réparation des vulnérabilités d'injection SQL PHP : L'injection SQL fait référence à une méthode d'attaque dans laquelle les attaquants utilisent des applications Web pour injecter de manière malveillante du code SQL dans l'entrée. PHP, en tant que langage de script largement utilisé dans le développement Web, est largement utilisé pour développer des sites Web et des applications dynamiques. Cependant, en raison de la flexibilité et de la facilité d'utilisation de PHP, les développeurs ignorent souvent la sécurité, ce qui entraîne l'existence de vulnérabilités d'injection SQL. Cet article explique comment détecter et corriger les vulnérabilités d'injection SQL dans PHP et fournit des exemples de code pertinents. vérifier

Dans le domaine de la sécurité des réseaux, les attaques par injection SQL sont une méthode d'attaque courante. Il exploite le code malveillant soumis par des utilisateurs malveillants pour modifier le comportement d'une application afin d'effectuer des opérations dangereuses. Les attaques par injection SQL courantes incluent les opérations de requête, les opérations d'insertion et les opérations de suppression. Parmi elles, les opérations de requête sont les plus fréquemment attaquées, et une méthode courante pour empêcher les attaques par injection SQL consiste à utiliser PHP. PHP est un langage de script côté serveur couramment utilisé dans les applications Web. PHP peut être lié à MySQL, etc.

Filtrage de formulaire PHP : prévention et filtrage des injections SQL Introduction : Avec le développement rapide d'Internet, le développement d'applications Web est devenu de plus en plus courant. Dans le développement Web, les formulaires sont l’un des moyens d’interaction les plus courants avec les utilisateurs. Cependant, il existe des risques de sécurité dans le traitement des données de soumission des formulaires. Parmi eux, l’un des risques les plus courants concerne les attaques par injection SQL. Une attaque par injection SQL est une méthode d'attaque qui utilise une application Web pour traiter de manière inappropriée les données saisies par l'utilisateur, permettant à l'attaquant d'effectuer des requêtes de base de données non autorisées. L'attaquant passe le

L'injection SQL est une méthode d'attaque réseau courante qui utilise le traitement imparfait des données d'entrée par l'application pour injecter avec succès des instructions SQL malveillantes dans la base de données. Cette méthode d'attaque est particulièrement courante dans les applications développées à l'aide du langage PHP, car la gestion par PHP des entrées utilisateur est généralement relativement faible. Cet article présentera quelques stratégies pour gérer les vulnérabilités d'injection SQL et fournira des exemples de code PHP. Utilisation d'instructions préparées Les instructions préparées constituent un moyen recommandé pour se défendre contre l'injection SQL. Il utilise des paramètres de liaison pour combiner les données d'entrée avec
