Page 1 sur 1

Problème pour creer une fonction

Posté : 11 mai 2007, 15:41
par supercanard
Bonjour,

Je desespere un peu de pas arriver a faire une chose simple avec la doc a portée de main...

Je veut simplement creer une fonction qui me netoie une variable envoyé par un formulaire :

Code : Tout sélectionner

function cleancode($tmp) { // SUPPRESSION DES BALISES HTML ET PHP $tmp= strip_tags($tmp); return $tmp; } cleancode($_POST['login']); echo $tmp; exit();
Je ne vois pas l'erreur et vous :?

Posté : 11 mai 2007, 15:43
par lem
je dirais que $tmp est peut-être local à la fonction ?
Moi j'aurais mis:
$tmp2 = cleancode($_POST['login']); 
      echo $tmp2; 

Posté : 11 mai 2007, 15:53
par supercanard
je dirais que $tmp est peut-être local à la fonction ?
Moi j'aurais mis:
$tmp2 = cleancode($_POST['login']); 
      echo $tmp2; 
Ah oui c'st mieux comme ça...

Maintenant si je fait ça :

Code : Tout sélectionner

if (isset($_POST['login'])) { $login= cleancode($_POST['login']); $req= "SELECT pwd FROM ipi_users WHERE login='".$_POST['login']."'"; $result= mysql_query($req); $data= mysql_fetch_array($result);
Il y a soucis non ?
Car dans la requete on va utiliser la variable du formulaire, donc celle qui n'est pas nétoyée ?
Mais si j'utilise la variable nétoyée, il y a du coup une faille dans la requête... même si la dans l'exemple ça ne risque rien, mais c'est pour savoir...

Posté : 11 mai 2007, 16:00
par Maitrepylos
Et pourquoi penses-tu que ce que tu reçois par $_POST[login] contient des tags html et php ?

Posté : 11 mai 2007, 16:03
par supercanard
Et pourquoi penses-tu que ce que tu reçois par $_POST[login] contient des tags html et php ?
Y'a toujours des petits malins qui envoi du HTML genre pour afficher en gras, tout ça; je prefere eviter...

Posté : 11 mai 2007, 16:06
par supercanard
Mais la n'est pas le probleme en fait. Même si cet exemple est pas terrible je pense que ça peut servir pour d'autres exemples.

Si je remplace $_POST['login'] par login dans ma requete... la c'est plus grave puisqu'on va pouvoir passer des variables par l'url.

Posté : 11 mai 2007, 16:08
par Maitrepylos
ben alors dans ton if tu initialise un variable $login à laquelle tu affectes le résultat de ta fonction cleancode

   $login= cleancode($_POST['login']);


utilise donc cette variable dans ton select

$req= "SELECT pwd FROM ipi_users WHERE login='".$login."'";

Posté : 11 mai 2007, 16:11
par supercanard
ben alors dans ton if tu initialise un variable $login à laquelle tu affectes le résultat de ta fonction cleancode

   $login= cleancode($_POST['login']);


utilise donc cette variable dans ton select

$req= "SELECT pwd FROM ipi_users WHERE login='".$login."'";
Euh wi mais donc ma requete est plus sécurisé du tout...
Y suffit d'envoyer une url avec login=machinchouette et pof on affiche le mot de pass de machinchouette ?

Posté : 11 mai 2007, 16:23
par Maitrepylos
Bon alors.

1 $_POST n'est pas passé en URL, c'est $_GET
2 pourquoi demander un select affichant le passwd, ce n'est certainement pas à l'utilisateur de savoir ça, mais bien à l'administrateur.


donc je te vois venir, si l'utilisateur veut modifier son passwd dans une interface d'administration, c'est qu'au préalable il s'est connecté et que tu as vérifié que c'est bien lui.

Si l'utilisateur à perdu sont mot de passe c'est à toi de lui fournir via un système de mail par exemple.

Posté : 11 mai 2007, 16:29
par supercanard
Bon alors.

1 $_POST n'est pas passé en URL, c'est $_GET
2 pourquoi demander un select affichant le passwd, ce n'est certainement pas à l'utilisateur de savoir ça, mais bien à l'administrateur.


donc je te vois venir, si l'utilisateur veut modifier son passwd dans une interface d'administration, c'est qu'au préalable il s'est connecté et que tu as vérifié que c'est bien lui.

Si l'utilisateur à perdu sont mot de passe c'est à toi de lui fournir via un système de mail par exemple.
Non mais ça daccord, en fait c'est sur un formulaire pour se loger, aucune session n'existe donc encore. Mais je disais cet exemple est bidon puisque y a pas vraiment de risque.
Mais je voulais savoir si dans le cas ou il y avait toutes ces contraintes il y avait une solution...

Posté : 11 mai 2007, 16:33
par Maitrepylos
En fait tu as peur de l'injection sql, google t'en dira plus.

Par contre pour mysql le commande mysql_escape_string() devrais te rassurer concernant cette problématique

Posté : 11 mai 2007, 16:40
par supercanard
En fait tu as peur de l'injection sql, google t'en dira plus.

Par contre pour mysql le commande mysql_escape_string() devrais te rassurer concernant cette problématique
Merci
Une piste =)

Re: Problème pour creer une fonction

Posté : 11 mai 2007, 17:26
par mere-teresa
Je desespere un peu de pas arriver a faire une chose simple avec la doc a portée de main...

Je veut simplement creer une fonction qui me netoie une variable envoyé par un formulaire
Tout d'abord bravo ! Il faut TOUJOURS filtrer les entrées utilisateur.


Si ta fonction cleancode() ne fait qu'un strip_tags, pourquoi ne pas appliquer directement strip_tags à ta donnée ?