Injection de SQL
L'injection du SQL est une technique qui exploite une faille de la sécurité se produisant dans la couche de la base de données d'une application . La vulnérabilité est présente où l'entrée d'utilisateur ou est inexactement filtrée pour les caractères d'échappement de de la constante de chaîne inclus dans des rapports du SQL ou entrée d'utilisateur n'est pas le fortement dactylographié et de ce fait inopinément exécuté. C'est en fait un exemple d'une classe plus générale des vulnérabilités qui peuvent se produire toutes les fois qu'une langue de programmation ou scripting est enfoncée à l'intérieur des autres.
Formes de vulnérabilités d'injection de SQL
Caractères d'échappement inexactement filtrés
Cette forme d'injection de SQL se produit quand l'entrée d'utilisateur n'est pas filtrée pour les caractères d'échappement et est puis passée dans un rapport du SQL . Ceci a comme conséquence la manipulation potentielle des rapports exécutés sur la base de données par l'utilisateur de l'application.La ligne du code suivante illustre cette vulnérabilité :
rapport : = " ; CHOISIR * À PARTIR des utilisateurs OÙ nom = « " ; + username + " ; » ; " ;
Ce code de SQL est conçu pour tirer vers le haut les disques d'un username spécifique de sa table des utilisateurs, cependant, si le " ; userName" ; la variable est ouvrée d'une manière spécifique par un utilisateur malveillant, la commande SQL Peut faire plus que l'auteur de code prévu. Par exemple, plaçant le " ; userName" ; variable As
a ou 't'='t
rend cette commande SQL Par la langue de parent :
CHOISIR * À PARTIR des utilisateurs OÙ nom = a ou 't'='t
Si ce code devaient être employés dans un procédé d'authentification puis cet exemple pourrait être employé pour forcer le choix d'un username valide parce que l'évaluation du « t'='t » est toujours vraie.
Sur certains serveurs de SQL tels que le serveur de la milliseconde SQL n'importe quelle commande valide du SQL peut être injectée par l'intermédiaire de cette méthode, y compris l'exécution des rapports multiples. La valeur suivante du " ; userName" ; dans le rapport ci-dessous causerait la suppression du " ; users" ; table aussi bien que le choix de toutes les données du " ; data" ; table (essentiellement indiquant l'information de chaque utilisateur) :
utilisateurs de TABLE de BAISSE d'a'; ; CHOISIR * À PARTIR des données OÙ le nom AIMENT '%
Cette entrée rend la commande SQL Finale comme suit :
CHOISIR * À PARTIR des utilisateurs OÙ nom = utilisateurs de TABLE de BAISSE d'a'; de de
D'autres réalisations de SQL n'exécuteront pas des commandes multiples dans la même question de SQL qu'une mesure de sécurité. Ceci empêche des intrus d'injecter des questions entièrement séparées, mais ne les arrête pas des questions de modification.
Type incorrect manipulation
Cette forme d'injection de SQL se produit quand un champ écrit par l'utilisateur n'est pas le fortement dactylographié ou n'est pas examiné pour assurer le type contraintes de . Ceci pourrait avoir lieu quand un champ numérique doit être employé dans une commande SQL, Mais le programmeur ne fait aucun contrôle pour valider que l'entrée écrite par l'utilisateur est numérique. Par exemple :rapport : = " ; CHOISIR * À PARTIR des données OÙ identification = " ; + a_variable + " ; ; " ;
Il est clair de ce rapport que l'auteur a eu l'intention a_variable d'être un nombre se corrélant avec le " ; id" ; champ. Cependant, si c'est en fait une corde puis l'utilisateur peut manoeuvrer le rapport car ils choisissent, déviant de ce fait le besoin de caractères d'échappement. Par exemple, établissement a_variable à
1 ; Utilisateurs de TABLE de BAISSE
supprimera le " ; users" ; la table de la base de données comme SQL rendu serait rendue comme suit :
CHOISIR * À PARTIR des données OÙ identification = 1 ; LAISSER TOMBER les utilisateurs de TABLE ;
Vulnérabilités à l'intérieur du serveur de base de données
Parfois les vulnérabilités peuvent exister dans le logiciel de serveur de base de données lui-même, comme cela était le cas pour les fonctions desreal_escape_chars du serveur de MySQL () http://dev.html pour plus de détails.
Exemples réels
Le le 31 octobre , le 2004 , après avoir été lié de Slashdot, l'emplacement de Dremel a été changé en potiron de Goatse Le le 26 octobre , le 2005 , les lecteurs inconnus de Heise a remplacé une page par la station de télévision allemande ARD qui a annoncé de pro-RIAA sitcom avec Goatse using l'injection de SQL
Le le 1er novembre , le 2005 , étudiant de lycée d'A a employé une injection de SQL pour diviser en emplacement d'un mazagine taiwanais de sécurité de l'information du groupe cible de technologie et pour voler l'information de client.
Le le 13 janvier , le 2006 , les intrus russes a divisé en site Web de gouvernement de Île de Rhode et a allégué volé des données par la carte de crédit des individus qui ont fait en ligne des affaires avec des Agences d'État.
Le le 29 mars , le 2006 , copain de Susam a découvert une paille d'injection de SQL dans www.org, un emplacement officiel de tourisme de Gouvernement Indien.
Le le 1er janvier , le 2007 , site Web de Dr.Jr7 SQL Nokia injecté d'une manière plutôt docile et civile, mais d'autre part des utilisateurs de Digg a procédé la changer en Goatse et bukkake
Le le 2 mars , le 2007 , Sebastian Bauer a découvert une paille d'injection de SQL en page d'ouverture de knorr.
Le le 29 juin , le 2007 , intrus défigure la page Web BRITANNIQUE de Microsoft using l'injection de SQL.
Le le 12 août , le 2007 , le site Web des Nations Unies a été défiguré using l'injection de SQL.
Dans la culture populaire
Le Xkcd de Webcomic a illustré les vulnérabilités qui sont produites avec l'injection de SQL.
Voir également
Injection de code de Sécurité d'application
.
| Random links: | Banlieue noire d'Ontwa, Michigan | Woluwe-Saint-Lambert | John Taylor, baron Taylor de Warwick | Michael McGaharn | & de Bohren ; club de der de Gore | Inyección_del_SQL |