CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Question protection injection SQL

Diego999
Diego999
Niveau 10
25 juin 2011 à 00:25:33

Bonjour tout le monde.

Je me pose actuellement une question pour la protection de ce genre d'attaque.

Je n'utilise pas de PDO, seulementmysql, et j'utilise à chaque fois mysql_real_escape_string si c'est un string.

Mais en suivant l'actualité avec les Lulszec qui pirate pas mal de site avec des injections SQL, je suis entrain de me dire que toutes les victimes, qui sont des "gros sites" (CIA,FBI,...) devraient avoir un minimum de sécurité ? Par minimum je veux dire mysql_real_escape_string, et je veux dire c'est pas des touristes qui font ça.

Donc ma question est : est-ce que la fonctions mysql_real_escape_string() est suffisant pour contrer les injections SQL,si c'est pas le cas, PDO serait suffisant ?

Si MySQL ou PDO suffise, je dois conclure que c'est des touristes les gens qui ont créés ces sites ? (ce qui m'étonnerais)

Merci d'éclairer ma lanterne !

deepblue
deepblue
Niveau 16
25 juin 2011 à 01:40:01

Documentes toi et clarifie la différence FONDAMENTALE de MySQL et PDO. Une fois cette étape passée, on pourra parler technique :ok:

Diego999
Diego999
Niveau 10
25 juin 2011 à 11:15:02

Ok, je vais faire ça, merci !

Diego999
Diego999
Niveau 10
25 juin 2011 à 11:22:32

Voilà ce que j'ai pu trouvé/comprendre :

MySQL, version obsolète. On devrait plus l'utiliser.
MySQLi est une amélioration de MySQL avec de nouvelles fonctionnalités et de meilleure performance.
PDO, utilise de la POO, un système de requête préparé, ce qui améliorait la sécurité. Protège automatique les champs, grâce au requête préparé (avec les ?, il va directement protéger le champs). On peut changer facilement de type de SGBD ( de tête Système de Gestion de Base de Données)

Conclusion (pas de moi) :

PDO
MySQLi
MySQL

Maintenant je pense que je suis prêt pour parler technique :)

deepblue
deepblue
Niveau 16
25 juin 2011 à 13:47:44

Bon...
MySQL c'est le systeme de gestion de base de données.
Les fonctions mysql_qqchose sont des.....fonctions php pour intéragir avec un serveur MySQL. Les mysqli est un ensemble de méthodes pour faire des interactions avec MySQL sur une couche objet. PDO c'est pareil que MySQLi à la différence que tu peux gérer plusieurs SGBD (mysql, sqlite et autres).

Conclusion, tu ne peux pas dire de mysql_qqchose, mysqli ou pdo, qui est le "meilleurs" car ils répondent très bien a des besoins particuliers.

L'avantage de PDO à mysql_qqchose ou mysqli c'est que si tu l'utilises avec par exemple les bind, alors tu évites de très grosses failles par injection. Mais tu peux te faire un ORM pour manipuler correctement les données avec du mysql_qqchose ou mysqli.

Diego999
Diego999
Niveau 10
25 juin 2011 à 16:55:59

Ok, merci de ta réponse !

Fire_Storm
Fire_Storm
Niveau 10
25 juin 2011 à 17:45:28

Vérifiez qu'un nombre est un nombre, du texte est du texte.

Pour mysql_real_escape_string, on m'a tout de même parlé d'un petit défaut de cette fonction qui pourrait laisser passer quelques injections malgré tout, ceci dit ce cas (bon allez je le cite xP, il parait que c'est l'accent grave utilisé comme apostrophe qui ne serait pas échappé donc laisserai libre court à des injections mais perso je ne l'utilise pas), après j'ai pas testé personnellement. Les requetes préparées ont l'avantage de faire le boulot de vérif (pour le SQL seulement hein xP) à ta place donc plus besoin de s'inquiéter des échappements, des nombres etc (à conditions de ne pas oublier de bien faire le ->prepare évidemment).

Et ça peut être parfois assez vilain (exemple un ASC ou DESC dans des options de tri croissant ou décroissant, c'est le genre de truc qu'on oublie totalement et qui pourtant peut être fatal.

Pareil il n'y a pas vraiment de meilleur que d'autre, et les requetes préparées peuvent être tout autant utilisées avec PDO qu'avec Mysqli. Perso j'étais pas très chaud pour les utiliser au départ mais ça s'avere assez efficace il faut bien l'avouer

En ce qui concerne la sécurité des gros sites; va en parler au site politique auquel j'ai su obtenir quelques infos, en gros c'était très simple: TOUT passait, aucune sécu, rien nada.

Pour Sony j'ai une connaissance qui m'a dit pareil: 0 niveau sécu, un ado avec le bon logiciel aurait très bien pu le faire aussi.

Et je peux te montrer un autre site politique ou il y a une très belle XSS en plein dans le moteur de recherche principal, à se demander sérieusement qui l'a développer.

Je suis loin d'être un pro mais quand même... =\

Par contre question que je me pose à propos de PDO; quand on dit que la requête est gardée en mémoire et peut être donc réutilisée sans devoir tout recalculer, on parle de la même requête exécuté une 2ième fois sur la même page ou par exemple d'une requête sélectionnant plusieurs champs et qui devient plus rapide ? Parce que perso, j'utilise rarement la MÊME requete 2 fois sur la même page.

Pseudo supprimé
Pseudo supprimé 25 juin 2011 à 20:14:12

De mon coté, j'utilise toujours les requêtes préparées, avec PDO, apparemment c'est mieux sécurisé parce-que ça détecte automatiquement si du code SQL se trouve dans les variables, par contre pour des requêtes qui ne sont pas répétées, j'ai l'impression que c'est plus lourd, parce-qu'il y a plus d'aller-retour avec le serveur de la base de données : on transmet la requête, on reçoit un identifiant de session, puis on envoie les variables, puis on renvoie un ordre d'exécution de la requête...

Le plus optimal, c'est de faire des procédures stockées, c'est à dire une fonction sur le serveur de base de données, qui a déjà les requêtes prêtes et qui attend que PHP lui envoie les variables. En plus ça va plus vite quand on a des transactions, car ce qui prend le plus de temps c'est la communication : les envois/réceptions de données entre Apache et le SGBD. Avec les procédures stockées on a juste à envoyer les variables et attendre la réponse finale, c'est mieux optimisé. Par contre niveau sécurité je sais pas, mais je vois pas pourquoi ça le serait moins.

Ici :
http://www.freelance-php.fr/pdo/procedures-stockees-pdo.html
Dans l'exemple #10 (fin de page) ils utilisent les procédures stockées, mais pour appeler la procédure ils le font avec une requête préparée, je sais pas si c'est uniquement pour une question de sécurité, parce-que niveau performance, c'est pas le top :(

Pseudo supprimé
Pseudo supprimé 25 juin 2011 à 20:19:44
  1. on parle de la même requête exécuté une 2ième fois sur la même page ou par exemple d'une requête sélectionnant plusieurs champs et qui devient plus rapide ? Parce que perso, j'utilise rarement la MÊME requete 2 fois sur la même page.

:d)
http://www.freelance-php.fr/pdo/procedures-stockees-pdo.html

Les exemples #6 et #7 répondent à ta question : même requête mais avec des données différentes dans les variables.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment