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


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

ouais je suis d'accord avec toi naholyr. Bon je vous poste le code de mon formulaire de connexion afin que vous voyez si c'est assez bien sécurisé ou pas.

Code PHP :
<?php 
if(get_magic_quotes_gpc())
{
$log = stripslashes($_POST['login']);
$pass = stripslashes($_POST['pass']);
}
else
{
$log = $_POST['login'];
$pass = $_POST['pass'];
}

$log = mysql_real_escape_string($log);
$pass = mysql_real_escape_string($pass);

$requete = "SELECT login, password, id, droitsAdmin FROM users WHERE login='".$log."' AND password='".$pass."'";
$exec_req = mysql_query($requete) or die ('erreur de connexion');
$row = mysql_fetch_row ($exec_req);

if (
$row[0] == null )
{
$this->mauvaislog= "Votre login ou votre mot de passe sont incorrects.";
}
else
{
//connexion
}



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

C'est vrai qu'avec PHP 5.2.1, l'accent a été mis sur la sécurité. Adieu le short tag, les références, magicquote, ...

Cela demande d'être plus rigoureux dans le code.

- Tu utilises la bibliothèque PEAR ?
- Ta variable register_global est à on ou off ?


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

register_global à ON
Par contre le n'utilise pas la bibliothèque PEAR sur Okracoke car j'ai commencé sans.
Par contre au taf j'utilise Quickform et franchement c'est de la boulette autant pour la facilité de mise en place que pour la sécurité. Si ça intéresse des gens je pourrais peut-être vous faire un petit tuto car l'approche de celui-ci n'est pas très aisée


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

Moi, ça m'intéresse, ce p'tit tuto sur QuickForm Smile

EDIT : je viens de lire un tuto sur le sujet sur Developpez.com et je me pose une question : comment mettre en forme le formulaire créé avec CSS ?


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

Ben en fait tu as dû voir que au début tu déclare une variable que tu vas utiliser pour tout tes éléments. Par exemple :
Code PHP :
<?php 
$form
->addElement('text', 'login', Entrer votre login');
en fait $form et un tableau. donc pour afficher "Entrer un login" tu feras :
Code PHP :
<?php 
echo $form['login']['label'];
et pour afficher le champ tu feras
Code PHP :
<?php 
echo $form['login']['html'];

je suis pas totalement sûr car moi je l'utilise avec un moteur de template et le même exemple s'écrit de cette manière
Code PHP :
<?php 
{$form.login.label} et {$form.login.html}

et c'est le même schéma pour tous les éléments d'un formulaire


RE: `magic quote` ou comment protéger vos données. - Caribou - 03-06-2007

Ben ton exemple avec '# ou l'autre, ça marche pas dans la majorité des cas meme sans protection

j'ai jamais utiliser select pour chercher login + password, mais uniquement un select par rapport au login, puis apres une comparaison password de l'utilisateur et password de la bdd du login. Je me souviens pas avoir déjà vu des select login+password d'ailleurs c'est bien la première fois pour ma part.
J'aime bien disocié les deux, parce que tu peux faire la difference entre un login non-existant ou un password erroné.
Puis finalement ça evite ce genre de faille lol, meme si les slashes sont là pour ça.


RE: `magic quote` ou comment protéger vos données. - Plume - 04-12-2007

Bonsoir Smile

Une question toute conne sur ce qui suis.
Code PHP :
<?php 
foreach ($_POST as &$var) $var = stripslashes($var);
Quand je fais ça, les variables `sécurisées' sont `enregistrées' dans le tableau ?
Par exemple, si je fais une fonction comme ceci :
Code PHP :
<?php 
/**
* This function secures the variables
* @param array $aVariablesTabs
* @return array Return the array of secured variables
*/
private function parseVariables( array $aVariablesTabs )
{
if(
get_magic_quotes_gpc() )
{
foreach(
$aVariablesTabs as &$variable )
{
$variable = stripslashes( $variable );
$variable = mysql_real_escape_string( $variable );
}
}

return
$aVariablesTabs;
}

J'ai tout bon, ou j'ai tout faux ? xD

[ EDIT ] On oublie .. Confusediffle:
PHP a écrit :Bien que le tableau soit référencé, foreach travaille sur une copie du tableau spécifié, et pas sur le tableau lui-même. Par conséquent, le pointeur de tableau n'est pas modifié, comme il le serait avec le fonction each(), et les modifications faites dans le tableau ne seront pas prises en compte dans le tableau original. Cependant, le pointeur interne du tableau original est avancé avec le traitement du tableau. En supposant sur la boucle foreach effectue tout le traitement, le pointeur interne du tableau sera à la fin du tableau.
Depuis PHP 5, vous pouvez facilement modifier les éléments d'un tableau en faisant précéder la valeur $value avec &. Ceci aura pour effet d'assigner par référence au lieu de copier la valeur.

[ foreach ]

~L~


RE: `magic quote` ou comment protéger vos données. - Trent - 04-12-2007

Nessper a écrit :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

Code PHP :
<?php 
mysql_query
("SELECT login, password WHERE login='toto');#' AND password='".$_POST['password']."'");

plutôt, non ?

Sinon perso j'applique de simples contrôles comme ceci :

Code PHP :
<?php 
// Première chose, encoder le mot de passe. Déjà ça évite toute faille relative au mot de passe, de plus ben c'est mieux d'encoder les mots de passes au cas ou quelqu'un rode un jour dans ta base de donnée
$_POST['Mot-de-passe'] = sha1($_POST['Mot-de-passe']);
// ENsuite on vérifie que le pseudo est alphanumérique avec la fonction ctype_alnum(). C'est l'idéal :)
if (ctype_alnum($_POST['Pseudonyme'])
{
// Ok
}
else
{
// Bawaaaaa !
}
Ça empèche tout risques Smile .