Tutoriel Vidéo PHP : Sécurité, Les injections SQL

Dans ce tutoriel vidéo nous verrons comment protéger un scripts des attaques par injection SQL. Dans un premier temps nous verrons comment une telle faille peut être exploité sur un formulaire. Dans un second temps, nous verrons comment se prémunir contre ce type de faille avec la fonction addslashes...


Télécharger la vidéo
(Réservé aux premiums)


Après avoir appris sur Internet quoi de plus normal que de partager à son tour ? Passionné par le web depuis un peu plus de 5 ans maintenant j'aime partager mes compétences et mes découvertes avec les personnes qui ont cette même passion pour le web : Vous.

Vous aimerez aussi

Youtube Data API

Youtube Data API
37m

Envie d'uploader ou de lister des vidéo youtube directement en PHP ? Ce...

Système d'alerte

Système d'alerte
16m

Dans ce tutoriel vidéo vous découvrirez comment mettre en place un...

34 commentaires
Ajouter un commentaire

sinbad4 Il y a 11 jours Répondre

merci bcp, y a t il d'autre failles ?

jordix Il y a 1 an Répondre

hey, je me doutais bien qui yavait surement une faille avec les requete sql mais j'avais pas pensé a sa. Moi lorsque l'admin veut se connecter, je fais : extract($_post)
$pass = sha1($pass) ;

Est-ce que sa règle le problème ou pas ?

jb_gfx Il y a 1 an Répondre

C'est dommage d'avoir utilisé addslashes() car dans de nombreux cas il existe des injections SQL qui permettent de passer outre cette "protection".

kimo Il y a 2 ans Répondre

merci

Charlie Il y a 2 ans Répondre

Petite fonction à utiliser sur vos données pour vos requêtes :

function securite_bdd($string)
{
// On regarde si le type de string est un nombre entier (int)
if(ctype_digit($string))
{
$string = intval($string);
}
// Pour tous les autres types
else
{
$string = mysql_real_escape_string($string);
$string = addcslashes($string, '%_');
}

return $string;
}

Rafael Il y a 2 ans Répondre

Merci beaucoup pour ce super tutos!
J'ai une question j'aimerais pour un systeme de commentaire pouvoir sécuriser des variable en enlevant les guillemet les slashe et tous le bazars mais tout en les affichant après.

moi j'ai essayer sa dans le fichier qui s'occupe d'inscrire les données dans la DB:

$contenu = htmlspecialchars(nl2br(addslashes($_POST['contenu'])));

et sa dans le fichier qui va afficher le resultat:

htmlspecialchars_decode($dataCn['contenu']);

mais ce n'est pas une methode qui marche alors je me demandais si on pouvait sécurisé les variable contre tous et ensuite même afficher des balise <?php ?> sans probleme





$contenu = htmlspecialchars(nl2br(addslashes($_POST['contenu'])));

Buster Il y a 2 ans Répondre

C'est bon un copian on la codée la même -__

sephiroth Il y a 1 an - Répondre

Boulet ! Buster... Encore un gagmin à tout casser.

Bref moi effectivement j'utilise mysql_real_escape_string() mais je ne comprends pas bien pourquoi tu dis que en mvc c'est déjà de base ? Sur un framework je veux bien mais un mvc codé from scratch c'est à toi de le prévoir.
Un autre truc qui m'a étonné, tu utilises la fonction de hashage sha1(), je sais qu'elle va crypter en un plus grand nombre de caractère mais que cela soit pour md5() ou bien sha1() il existe les tables de hashage précalculé qui permettent de reconstruire un hashage. Donc l'un comme l'autre de toute façon sont tout deux des algorythmes que l'on peut casser (pas à la portée du premier venu heureusement).
Donc on se rabat sur la performance entre md5() et sha1().

la fonction md5() est largement suffisante afin d'éviter des erreurs de collisions en les valeurs, ce qui fait que l'on se rabat sur la performance entre les deux. J'ai vue un test je ne sais plus où, qui comparait les deux et qui montrait qu'il y avait une différence de 20% supérieur en temps de réponses sur la fonction sha1() sur la relance serveur.
Même si il ne faut pas non plus être obsédé par le temps de performance vue que j'utilisais souvent md5() et que j'avais vue des fois sha1() j'ai cherché la différence. Etant donné que les deux peuvent autant cassable l'un que l'autre il a été prouvé, alors j'ai opté pour resté sur du md5()

Fataliste Il y a 2 ans Répondre

Génial, merci beaucoup !!!

Buster Il y a 2 ans Répondre

Pouvez vous m'aider très urgent et bonne année

Grafikart Il y a 2 ans - Répondre

Pas la peine d'insister je donnerais pas les sources.

Buster Il y a 2 ans Répondre

...

Buster Il y a 2 ans Répondre

Si elle me servent a quelque chose faire un avent après sur mon forum.

J'en ai vraiment besoin.

...

nadou Il y a 2 ans Répondre

j'ai besoin d'un aide comment faire pour sécuriser ma base de données contre sql injection sachant que j'utilise un database firewall quelle regle je doit ajouter
merci

Grafikart Il y a 2 ans - Répondre

Les injections SQL viennent d'un script mal sécurisé, pas d'un problème sur la base de donnée.

Buster Il y a 2 ans Répondre

A noter : je le veut déjà vulnérables :D

Grafikart Il y a 2 ans - Répondre

Et avec ça des frites ?

Plus sérieusement je ne met pas les scripts avec ce tutoriel car elles ne serviraient à rien. Le but du tutoriel étant d'apprendre à sécuriser, pas à montrer une faille.

Buster Il y a 2 ans Répondre

Bonjour très beau tutoriel vidéo sa serait te demander de uploader le zip complet + DB de votre formulaire pour faire des testes de vulnérabilités.

Avec l'option ( les variables postés etc ... )
Et d'envoyer le tout a petitarabedu22@hotmail.fr

Merci !!!

Badbart Il y a 2 ans - Répondre

Tu veux pas son clavier + sa souris aussi ?
Si il voulez te donner les fichiers a mon avis ça serait déjà fait, donc pas la peine de relancer 10 messages.
Sur ce Mehdi, bonne soirée.

Zigee Il y a 2 ans Répondre

A noter que pour les sites hébergés par OVH, toutes les valeurs posts sont automatiquement "addslashées", par ailleurs il faut donc pas oublier de les "stripslasher" lorsqu'on fait un echo : echo stripslashes($_POST[]), toujours chez OVH.

valana2k3 Il y a 3 ans Répondre

Salut
merci pour les tutoriaux ils m'ont beaucoup aidé !!!!
enfaite je suis à la recherche sur les tutoriaus des menus deroulants
comme par exemple sur votre site "http://grafikart.fr/tutoriels/video/securite-injections-sql-59 "
Merci
Bonne continuation et bon courage !!!

thidenthi Il y a 3 ans Répondre

excellent tuto

merci à vous

big_nay Il y a 3 ans Répondre

C'est bien comme tutorial mais incomplet, il faudrait également traité le cas où l'on souhaite rentré un chiffre dans la requete. Il serait interessant de traiter ce cas, notamment en vérifiant que la donnée rentré soit bien un chiffre avec intval() par exemple.
Sinon bravo pour ce tutorial

Shad Il y a 3 ans Répondre

bien sympathique ce petit tutau, comme tous les autres d'ailleurs.
Merci bien

OR DROP TABLE; Il y a 3 ans Répondre

OR 1 = 1;
mysql_query("DROP TABLE users");

anis84 Il y a 3 ans Répondre

bonjour,

merci pour le tutoriel il est géniale !

mais j'ai une question, es que dans wordpress cette fonction addslashes existe déjà ?

Zeldjian Il y a 3 ans Répondre

Merci bien pour ce très bon tutoriel mais j'ai une question, c'est la police utilisé dans votre éditeur de texte. Merci

notten13 Il y a 3 ans Répondre

Excusez-moi, je pose une question qui a déjà été posée... La prochaine fois, je lirais les autres commentaires avant de parler. Comme on dit, il faut tourner 7 fois sa langue dans sa bouche avant de parler !

notten13 Il y a 3 ans Répondre

Bonjour !

Ne peut-on pas utiliser également la fonction mysql_real_escape_string() ?

fedora Il y a 3 ans Répondre

@ leknoppix : merci Frère , mais je suis obligé d'utiliser Jing , puisque je suis sous Win. SVP est ce que je peut faire du zoom dans le vidéo comme dans les tuto de Grafikart.

DiGui Il y a 3 ans Répondre

En tous cas, Raton tu es une bête.

leknoppix Il y a 3 ans Répondre

pour fedora, le logiciel est screenflow, sinon tu as également Jing.

Je les utilise moi pour faire des demos de logiciel lors d'oral lors d'examen ou lors de présentation d'application lors de conseil municipal, et oui, meme les mairies veulent utilisé des applications intranet en php .

Grafikart Il y a 3 ans Répondre

@noXee` : Merci de ta précision, oui j'ai effectivement utilisé la première fonction qui m'est venu à l'esprit (avec le MVC le escape se fait tout seul donc un peu perdu l'habitude )

noXee` Il y a 3 ans Répondre

@Babou : mysql_escape_real_string est à utiliser pour MySQL et, est plus conseillé que la fonction addslashes() qui n'échappe pas tous les caractères.

Il est donc préférable d'utiliser la fonction spécifique au SGBD, et non pas celle décrite dans le tutoriel. Je pense donc que l'auteur du tutoriel à fait une petite erreur par rapport au choix de addslashes. Enfin avec toutes les vidéos qu'il a postées, ça peut bien arriver de temps en temps

fedora Il y a 3 ans Répondre

Excusé moi Grafikart , c'est quoi le logiciel que tu l'utilise pour que tu fait tes tuto ?? Merci Frère

fedora Il y a 3 ans Répondre

la sécurité c'est un atout , merci génie Grafikart

Lyes Il y a 3 ans Répondre

Mercii,ce tuto m'a bien servi.

Babou Il y a 3 ans Répondre

Super tuto merci
Je voulais savoir aussi, si la fonction mysql_real_escape_string() faisait la même chose ? Sinon quel est la différence ?

DoDo021 Il y a 3 ans Répondre

Merci pour se tuto intéressant =)

Sa fais plaisir =)

Have Fun DoDo021

Laisser un commentaire

Si vous avez une question il est conseillé d'utiliser le forum si vous voulez une réponse sûre.