Sécurité PHP : Votre avis svp ?

Eléphanteau du PHP | 15 Messages

18 août 2005, 19:09

Bonjour à tous,

J'aimerais avoir votre avis sur la sécurité d'une page en utilisant php et une bd de la façon suivante s'il vous plaît :
<?php
...
$req_acces=mysql_query("SELECT iduser,ipuser,idsession FROM membres WHERE iduser='".$_SESSION['user_id']."' AND ipuser='".$_SERVER['REMOTE_ADDR']."' AND idsession='".$_SESSION['sess_id']."'",$idconnect);
$cpt_acces=mysql_num_rows($req_acces);
if($cpt_acces!=1) {//Si le visiteur n'a pas les mêmes ip, id et idsession que lorsqu'il s'est connecté. Je le redirige vers...
	header("Location:../index.php");//... l'accueil du site !
	exit();
	} else {// Sinon j'affiche la page.
	// Bienvenue cher membre, bla bla bla...
	}
?>
Infos complémentaires : Lorsque le membre d'identifie, je récupère ses login et mot de passe de cette façon :
<?php
...
$pseudo=strip_tags($_POST['pseudo']);
$mdp=md5(strip_tags($_POST['mdp']));
...
?>
Merci d'avance :wink:
Modifié en dernier par Daviwys le 18 août 2005, 23:16, modifié 1 fois.

Eléphanteau du PHP | 13 Messages

18 août 2005, 20:51

Déja faire un strip_tags sur un md5 ...
Opte plutot pour l'inverse quoi [:

Je me demande bien quel type de champs tu as utiliser pour stocker les adresses ip :-°
A ta place j'aurais utilisé ip2long et stocké dans un champ int.

Si tes vars (exceptés l'ip, non passée sous ip2long) sont des ints, il est plus intelligent de faire :
<?php
$req_acces=mysql_query("SELECT iduser,ipuser,idsession FROM membres WHERE iduser=".(int)$_SESSION['user_id']." AND ipuser='".$_SERVER['REMOTE_ADDR']."' AND idsession=".(int)$_SESSION['sess_id'],$idconnect); 
?>
Sinon apparemment y a pas de problème, si ton magic_quotes est à on.
J'aurais quand même par précaution pris le soind e passer sous le addslashes ou le htmlentities + ENT_QUOTES (à la place d'un strip_tags un peu dérisoire).

Au passage :
<?php
function add_slashes($str)
{
return !get_magic_quotes_gpc()?addslashes($str):$str;
}
?>
Image

Eléphanteau du PHP | 15 Messages

18 août 2005, 23:15

Salut graal :wink:
Déja faire un strip_tags sur un md5 ...
Opte plutot pour l'inverse quoi [:
J'ai corrigé :wink:
Je me demande bien quel type de champs tu as utiliser pour stocker les adresses ip :-°
Actuellement, en (varchar) mais ta suggestion est bien meilleur ! Mais d'après cette page : http://www.dicofr.com/cgi-bin/n.pl/dico ... 0101002733 d'ici l'an 2010 tout Internet devrait avoir migré sur IPv6.
A ta place j'aurais utilisé ip2long et stocké dans un champ int.
Et comme "ip2long" ne s'utilise qu'avec du IPv4, je me demande comment faire autrement qu'en "varchar" ?

Pour infos, je défini $idSession de la façon suivante :
<?php
...
$idSession=session_id();
...
?>
Quant à ta fonction, c'est sympa de ta part mais je ne comprends pas trop les "fonctions" et la façon de les utiliser ? Peux-tu m'expliquer ?
<?php
function add_slashes($str)
{
return !get_magic_quotes_gpc()?addslashes($str):$str;
}
?>
Merci.

Mammouth du PHP | 19672 Messages

18 août 2005, 23:23

Exemple d'utilisation de ta fonction:
<?php
// On définit une fonction ajout_slashes()
function ajout_slashes($str)
{
    return !get_magic_quotes_gpc()?addslashes($str):$str;
}

// on définit une variable quelconque
$variable = "L'arbre qui cache l'autre foret";

// On affiche la variable une première fois;
echo("<p>". $variable ."</p>\n");

// On modifie la variable en faisant appel à la fonction:
$variable = ajout_slashes($variable);

// On affiche à nouveau la variable :
echo("<p>". $variable ."</p>\n");
?>
Exécute ça et observe : tu obtiens :
.
L'arbre qui cache l'autre foret

L\'arbre qui cache l\'autre foret
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 15 Messages

18 août 2005, 23:36

Merci beaucoup pour cette explication et l'exemple !

On peut pas faire mieux je pense lol

Génial !!

Eléphanteau du PHP | 13 Messages

19 août 2005, 20:35

Faire autrement qu'en VARCHAR ?
Tout simplement en INT ;)
Image