JeuWeb - Crée ton jeu par navigateur
`magic quote` ou comment protéger vos données. - 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 : `magic quote` ou comment protéger vos données. (/showthread.php?tid=1206)

Pages : 1 2


`magic quote` ou comment protéger vos données. - Nessper - 21-05-2007

DämEn a écrit :Bonjour ^^

Citation :En mettant n'importe quel login de joueur suivi de '# tu pouvais te connecter sans mot de passe
Comment t'as fait ? Dans mon script, je n'ai rien fait de particulier, j'viens d'essayer & ça marche pas :/
Possible de voir à quoi ça ressemblait histoire de pas faire la bourde ^^

@ tchaOo°

Un truc vraiment horrible.
Code PHP :
<?php 
mysql_query
("SELECT login, password WHERE login='".$_POST['login']."' AND password='".$_POST['password']."'");
Sans même tester si les champs étaient vides.

Et pour vérifier la sécurité de ton formulaire voilà 2 méthodes :

1) tu mets toto'# dans login et ce que tu veux dans password. Du coup ça donne :
Code PHP :
<?php 
mysql_query
("SELECT login, password WHERE login='toto'#' AND password='".$_POST['password']."'");
Et tout ce qui est après le # est ignoré. Donc tu te connectes sans password

2) tu mets ' OR 1='1 dans les 2 champs. Du coup voilà ce que la requête exécute :
Code PHP :
<?php 
mysql_query
("SELECT login, password WHERE login='' OR 1='1' AND password='' OR 1='1';
et là tu te connecte sous le pseudo avec le premier id de la base. Donc je sais pas si c'est mieux ou pas mais je vous conseille de ne pas donner les droits les droits d'admin au premier id


RE: Okracoke, nouveau jeu en ligne - Plume - 21-05-2007

Bonjour ^^

C'est bizarre que ça te fasse ça : $_POST['login'] = "toto'#";
Puisque normalement les données sont traitées directement. Tu devrais avoir quelque chose comme : $_POST['login'] = "toto\'";

Comment ça se fait que ça ne marche pas comme ça chez toi ?

@ tchaOo°


RE: Okracoke, nouveau jeu en ligne - Nessper - 22-05-2007

C'est une histoire de magic quotes il me semble


RE: Okracoke, nouveau jeu en ligne - Roworll - 22-05-2007

J'ai déjà été piégé par les magic_quotes en passant d'un hébergeur à l'autre.
Le premier les supportait et pas le 2e... Imaginez la catastrophe...

Du coup maintenant, pour chaque variable reçue, je fais ça:
Code PHP :
<?php 
if(!get_magic_quotes_gpc()){
$_POST['name']=addslashes($_POST['name']);
$_POST['pass']=addslashes($_POST['pass']);
}
Au moins, je suis sur que toutes les chaînes de caractère sont formatées de la même manière mantenant.


RE: Okracoke, nouveau jeu en ligne - Plume - 22-05-2007

Bonjour ^^

C'est pas faux.. Disons que j'ai pas trop fait attention. Tant pis ^^ Qui vivra verra Big Grin
Pas moyen d'activer les magic quotes à partir d'un script de configuration par exemple ?

@ tchaOo°


[split] Okracoke, nouveau jeu en ligne - Nessper - 22-05-2007

Voilà, j'emploie la même technique que Roworll, ça évite les mauvaises surprises.
Dämen => Pour activer les magic quotes ça se passe dans le fichier php.ini


RE: Okracoke, nouveau jeu en ligne - Plume - 22-05-2007

Bonjour ^^

Je sais oui, mais il n'y a pas moyen de changer ça avec une fonction ou autre ? Histoire d'avoir un certain pouvoir d'action malgré le fait que nos hébergeurs ne nous donnent pas la main sur les fichiers de configuration :-°

@ tchaOo°


RE: Okracoke, nouveau jeu en ligne - Nessper - 22-05-2007

il me semble que pour les activer il faut que tu mettes dans ton .htaccess la ligne suivante :
Code :
php_value magic_quotes_gpc 1
ou 0 pour les désactiver


ps : tu pourrais déplacer les derniers posts de ce topic dans un topic au nom plus approprié je pense, non ? comme ça pourrait profiter à tout le monde


RE: `magic quote` ou comment protéger vos données. - Mysterarts - 22-05-2007

Merci pour l'info en tout cas !
Je commençais justement à m'inquéter après avoir entendu ce que th0m disais sur ton jeu dans le topic à son sujet ^^

Mysterarts, protégez vous !


RE: `magic quote` ou comment protéger vos données. - naholyr - 22-05-2007

addslashes n'est pas la meilleure méthode pour les requêtes SQL. Il vaut mieux utiliser la fonction d'échappement dédiée (pour mysql c'est mysql_real_escape_string()), et plutôt que de compter sur magic_quotes il vaut mieux considérer qu'il est désactivé, construire ses scripts SANS magic_quotes, et pour la compatibilité, DESLASHER les variables qui viennent de l'utilisateur, afin d'utiliser au cas par cas les fonctions de protections qui conviennent : mysql_real_escape_string(), escapeshellarg(), addslashes(), strip_tags(), etc...

Code PHP :
<?php 
if(get_magic_quotes_gpc()) {
foreach (
$_GET as &$var) $var = stripslashes($var);
foreach (
$_POST as &$var) $var = stripslashes($var);
}

Ceci permet de travailler dans un environnement "non corrompu" par une transformation implicite des données reçues, et d'ailleurs depuis PHP5 les magic_quotes sont désactivées par défaut.