Maison >base de données >tutoriel mysql >Comment prévenir les attaques par injection SQL ?

Comment prévenir les attaques par injection SQL ?

青灯夜游
青灯夜游original
2019-03-22 10:14:3718660parcourir

L'injection SQL est une attaque par injection qui peut exécuter des instructions SQL malveillantes. L'article suivant vous présentera l'injection SQL et présentera brièvement les méthodes pour empêcher les attaques par injection SQL. J'espère qu'il vous sera utile.

Comment prévenir les attaques par injection SQL ?

Qu'est-ce que l'injection SQL ?

L'injection SQL (SQLi) est une attaque par injection qui peut exécuter des instructions SQL malveillantes. Il donne aux attaquants un contrôle total sur le serveur de base de données derrière une application Web en insérant du code SQL arbitraire dans les requêtes de base de données. Les attaquants peuvent utiliser les vulnérabilités de l'injection SQL pour contourner les mesures de sécurité des applications ; ils peuvent contourner l'authentification et l'autorisation d'une page Web ou d'une application Web et récupérer le contenu d'une base de données SQL entière ; ils peuvent également utiliser l'injection SQL pour ajouter, modifier et supprimer des éléments ; la base de données.

Les vulnérabilités d'injection SQL peuvent affecter tout site Web ou application Web utilisant une base de données SQL telle que MySQL, Oracle, SQL Server ou autres. Les criminels peuvent l'utiliser pour obtenir un accès non autorisé aux données sensibles des utilisateurs : informations clients, données personnelles, secrets commerciaux, propriété intellectuelle, etc. Les attaques par injection SQL sont l’une des vulnérabilités des applications Web les plus anciennes, les plus populaires et les plus dangereuses.

Types d'attaques par injection SQL

Les attaques par injection SQL peuvent être effectuées de différentes manières. Un attaquant peut observer le comportement d'un système avant de choisir une méthode d'attaque spécifique.

Injection intra-bande

Il s'agit d'une attaque typique où l'attaquant peut lancer l'attaque via le même canal de communication et obtenir les résultats. Cela se fait via deux techniques intrabande :

● Injection SQL basée sur les erreurs : obtenez des informations sur la base de données à partir du message d'erreur affiché

● Injection SQL basée sur l'union : dépend de l'attaquant a pu relier les résultats des informations volées par UNION ALL à des résultats légitimes.

Les deux techniques reposent sur la modification par l'attaquant du SQL envoyé par l'application, ainsi que des erreurs affichées dans le navigateur et des informations renvoyées. Cela réussira si le développeur d'applications ou le développeur de bases de données ne parvient pas à paramétrer correctement les valeurs qu'ils utilisent dans la requête. Les deux sont des méthodes d’essais et d’erreurs et les erreurs peuvent être détectées.

Injection aveugle

Également connue sous le nom d'injection SQL inférentielle, une attaque par injection aveugle ne révèle pas les données directement de la base de données cible, mais l'attaquant examine attentivement le comportement indirect ; des indices. Les détails de la réponse HTTP, les pages Web vierges pour certaines entrées utilisateur et le temps nécessaire à la base de données pour répondre à certaines entrées utilisateur peuvent tous être des indices, en fonction des objectifs de l'attaquant. Ils peuvent également pointer vers un autre vecteur d’attaque SQLi tenté par l’attaquant.

Injection hors bande

Cette attaque est un peu plus complexe et peut être utilisée par un attaquant lorsqu'il est incapable d'atteindre son objectif en un seul direct attaque par requête-réponse. En règle générale, les attaquants créent des instructions SQL qui, lorsqu'elles sont présentées à la base de données, déclenchent la création par le système de base de données d'une connexion à un serveur externe contrôlé par l'attaquant. De cette manière, un attaquant peut collecter des données ou potentiellement contrôler le comportement de la base de données.

L'injection de second ordre est une attaque par injection hors bande. Dans ce cas, l'attaquant fournira une injection SQL qui sera stockée et exécutée par un acte distinct du système de base de données. Lorsqu'un comportement secondaire du système se produit (il peut s'agir d'une tâche basée sur le temps ou de quelque chose déclenché par d'autres administrateurs ou utilisateurs typiques utilisant la base de données) et que l'injection SQL de l'attaquant est effectuée, c'est à ce moment-là que le contrôle de l'attaquant du système se produit.

Comment prévenir les attaques par injection SQL ?

Les suggestions suivantes peuvent aider à prévenir les attaques par injection SQL réussies :

1. N'utilisez pas de SQL dynamique

Évitez de fournir. l'utilisateur avec L'entrée est placée directement dans l'instruction SQL ; il est préférable d'utiliser des instructions préparées et des requêtes paramétrées, ce qui est plus sûr.

2. Ne conservez pas les données sensibles en texte brut

Cryptez les données privées/confidentielles stockées dans la base de données, cela offre un autre niveau de protection pour empêcher les attaquants de réussir à les expulser ; données sensibles.

3. Limiter les autorisations et privilèges de la base de données

Définir les capacités de l'utilisateur de la base de données au minimum requis, cela limitera ce qu'un attaquant peut faire s'il parvient à gagner ; accéder .

4. Évitez d'afficher les erreurs de la base de données directement à l'utilisateur

Un attaquant peut utiliser ces messages d'erreur pour obtenir des informations sur la base de données.

5. Utilisez un pare-feu d'application Web (WAF) pour les applications Web qui accèdent à la base de données

Cela fournit une protection aux applications orientées Web et peut aider à identifier l'injection SQL. tentatives ; selon les paramètres, cela peut également permettre d'empêcher les tentatives d'injection SQL d'atteindre l'application (et donc la base de données).

6. Testez régulièrement les applications Web qui interagissent avec les bases de données

Cela peut aider à détecter de nouveaux bugs ou régressions qui pourraient permettre l'injection SQL.

7. Mettez à jour la base de données avec les derniers correctifs disponibles

Cela empêche les attaquants d'exploiter les faiblesses/bugs connus présents dans les anciennes versions.

Résumé : L'injection SQL est une méthode d'attaque populaire, mais en prenant les précautions appropriées, telles que garantir le cryptage des données, sécuriser et tester les applications Web, et que vous êtes à jour avec les correctifs, vous pouvez prendre des mesures significatives pour protéger vos données.

Tutoriels vidéo associés recommandés : "Tutoriel MySQL"

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !

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!

Déclaration:
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