Problème de piratage - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Problème de piratage (/showthread.php?tid=3631) |
RE: Problème de piratage - phenix - 03-02-2009 Citation :Ce qui est sûr, ne jamais laisser en prod des "or die (mysql_error())" Je suis en bêta test :hahahaha: Citation :À tout hasard, est-ce que tes magic quotes sont activés ? Si oui, ça explique peut-être la vulnérabilité de ton application puisqu'elles interfèrent avec mysql_real_escape_string(). Elle était désactivé, mais peut être ma ton fait la blague de les réactiver... je vérifie. en direct du phpinfo: magic_quotes_gpc On On Bon, comment on désactive cette connerie. RE: Problème de piratage - wild-D - 03-02-2009 (03-02-2009, 12:08 AM)phenix a écrit :Citation :Ce qui est sûr, ne jamais laisser en prod des "or die (mysql_error())" ... en même temps c'est qui qui intitule son post : "pb de piratage" ? après chacun traduit "prod" comme y veux; mais perso un serveur tout public c'est automatiquement prod. (qu'il héberge un site en alpha, beta, gamma, v1, v2, v3... pamplemousse ^^) pour les magic_quotes -> php.ini et sinon ben faudra faire à la mimine le retrait des magic_quote, car ça c'est un truc qui est effectué avant l'exécution de ton script RE: Problème de piratage - Sephi-Chan - 03-02-2009 La solution la plus simple est de désactiver les magic quotes à l'aide d'un .htaccess contenant le code : Code : php_flag magic_quotes_gpc Off Sinon, tu peux te faire une fonction secureString qui… sécurisera tes chaînes, et cela sans être dérangé par les magic quotes.
Mais peut-être que la faille n'est pas là. Cela dit, ce sujet est une très bonne démonstration qui montre que l'utilisation d'une fonction personnalisée ou mieux, d'une classe (qui étend PDO, par exemple). Ça fait un exemple concret de plus pour expliquer l'intérêt des fonctions et de l'objet. Tu n'as plus qu'à écrire une fonction (genre query($string)) qui prend en argument une chaîne (la requête), écrit dans un fichier que l'utilisateur X (son id est récupéré depuis la session) a effectué la requête donnée puis qui retourne mysql_query($string) avec la requête demandé. Sephi-Chan RE: Problème de piratage - Argorate - 03-02-2009 C'est pas bête, merci de m'y faire penser! Pour l'instant j'ai pas mis le jeu en ligne donc j'ai aucun soucis, mais je sais pas si j'aurais pensé a enlever tous les mysql_error(), surtout que j'aime bien les garder, je trouve ça pratique. ^^ Donc je pense que je ferais comme Wells ma conseillé (en aparté), je vais créer ma propre fonction, qui retourne un message d'erreur personnalisé pour les utilisateurs et le mysql_error() pour moi même. RE: Problème de piratage - Amrac - 03-02-2009 Pour trouver le gars qui te cause problème, en début de page tu scan tout tes $_GET et $_POST et tu y cherche une quelconque instruction SQL: SELECT, UPDATE, INSERT, WHERE Vite fait et non testé, je te propose ce bout de code: Code PHP :
Voila grossomodo, biensure pour le $_GET c'est un copier/coller et tu remplace _POST par _GET. La, tu es certain de trouver a la fois le bonhomme et le script foireux. Je te conseil d'étudier quelque jour comment il procède, notamment pour voir s'il y a plusieurs trou de sécurité. Etant donné que tu est en béta, c'est une bonne occasion pour sécurisé ton script. RE: Problème de piratage - pascal - 03-02-2009 je déconseille l'envoi de mail en cas de détection, c'est très risqué (engorgement de la messagerie, tout ça...). un log de la requête et des infos, c'est l'idéal. ha oui, dans le if, ajoute un truc pour arrêter l'exécution du script. sinon il faut aussi vérifier que les accès à phpmyadmin sont bien sécurisés. A+ Pascal RE: Problème de piratage - phenix - 04-02-2009 Alors, quelques nouvelles: J'ai placé ce script en premier truc à exécuter: Code PHP :
C'est le code qui est dans php.net pour désactivé les magic quote. Ensuite, j'ai grillé le perso du pirate, la dernière fois, il en avait recrée un autre, mais depuis, plus de nouvelle. Code PHP :
C'est vraiment pas con comme truc, avec sa il y a même moyen de coupé totalement les possibilité d'envoyer des requêtes. Par contre, je rajouterais bien SHOW, TABLE, DROP, TRUNCATE. Je rejouterais également un i car on peux passer des requête en minuscule si on veux. Il n'y a pas moyen de prendre un array comme paramètre ? Je vais me renseigné, mais sa peu être un bon moyen de ce protéger. RE: Problème de piratage - Allwise - 04-02-2009 Pour utiliser un tableau, tu peux faire un truc du style Code PHP :
Et le pirate il va se faire taper sur les doigts alors ? RE: Problème de piratage - Sephi-Chan - 04-02-2009 C'est très bourrin comme façon de protéger. Je te conseille de revoir ton code et de protéger les valeurs qui doivent l'être (les chaînes de caractères) et de contrôler les données qui entrent dans tes scripts. Idéalement, désactive les magic quote via un fichier .htaccess. Sephi-Chan RE: Problème de piratage - phenix - 04-02-2009 Citation :C'est très bourrin comme façon de protéger. Ouais, en plus sa empêche certain mots d'être écrit dans un profile par exemple: "selection"... M'enfin, pour le moment, j'ai plus de problème, il est revenu sur le site, a laissé un message sur le forum, mais la base de donnée est intacte. Peut être la faute au magic quote :heuuu: Citation :Je te conseille de revoir ton code et de protéger les valeurs qui doivent l'être (les chaînes de caractères) et de contrôler les données qui entrent dans tes scripts. Sa fait un bon moment que je fais sa, j'ai pas corrigé grand chose, vu que je mes des mysql_real_escape_string sur toutes les variables qui sont destinée a faire des requêtes depuis le début du codage... Utilisé les magic quote + mysql_real_escape_string c'est vraiment exploitable pour faire des injections ? Citation :Idéalement, désactive les magic quote via un fichier .htaccess. Malheureusement cela ne semble pas marcher. Et puis, je devrais mettre ce fichier .htaccess dans tout mes répertoires ou bien un seul à la racine suffit ? En tout cas, merci de votre aide, sa fait plaisir de ce sentir soutenu ^^ |