Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2012, 17h53   #1
Membre du Club
 
Homme
Inscription : septembre 2011
Messages : 71
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 71
Points : 53
Points : 53
Par défaut maîtrise de Get dans URL

Bonjour

J'espère que je poste au bon endroit.

Depuis un moment je me suis mis au php et je roule ma bosse.

Maintenant mon site est en ligne et tout vas bien sauf !! Que ...

Au lieu de me brancher sur phpMyAdmin j'essaie de modérer les messages via mon site. Donc je sélectionnes modération dans mon menu en faisant transiter ma variable $_Get["maVariable"] par l'URL qui traduit le n° de message à modérer pour la récupérer sur la page de modération. Donc si je tapes n'importe quoi dan l'URL après le point d'interrogation je met la page en erreur. Merci de m'expliquer les dispositions à mettre en oeuvre pour éviter ce genre de problème. J'ai lu les tutos pour la sécurité mais je n'ai pas su où trouver l'info.
proximacent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 10h04   #2
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Tu trouveras plein de choses ici
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 23/01/2012, 12h26   #3
Membre du Club
 
Homme
Inscription : septembre 2011
Messages : 71
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 71
Points : 53
Points : 53
Merci Marc3001 pour ta réponse.

Je crois que je vais faire de la lecture avant de continuer.

Bonne journée
proximacent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 17h13   #4
Candidat au titre de Membre du Club
 
Homme Stevens
Inscription : janvier 2012
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Stevens
Localisation : France

Informations forums :
Inscription : janvier 2012
Messages : 21
Points : 14
Points : 14
Même si la doc est plutôt pas mal, elle ne réponds pas précisément à la question.

Si tu fais passer l'id dans l'url comme ceci :
http://ton_site.com/moderate.php?id=tonid

Si celui ci est un entier (ce qui est généralement le cas), alors il te suffit de verifier comme ceci :

$id = intval($_GET['id']);

En faisant ceci, tu ne récupèreras que la valeur entier de l'id et corrige ainsi une potentiel faille (xss).

Pour les chaines de caractère, il y a la fonction htmlspecialchars()
Et avant d'enregistrer quoique ce soit dans mysql, il faut faire un mysql_escape_string() sur la valeur à insérer.
JStevens est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/01/2012, 17h30   #5
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Bonjour,

Citation:
Envoyé par JStevens Voir le message
$id = intval($_GET['id']);

En faisant ceci, tu ne récupèreras que la valeur entier de l'id et corrige ainsi une potentiel faille (xss).
et si $_GET['id'] est null ?

je préfère :
Code php :
1
2
3
4
5
6
7
8
 
// si $_GET['id'] existe, est différent de 0, et est un numérique 
if(!empty($_GET['id']) && is_numeric($_GET['id'])) {
 
  // j'utilise $_GET['id']
  $id= $_GET['id'];  
 
}

mais on s'éloigne de la question, pour récupérer la valeur dans la page, cela suffit :
Code php :
1
2
3
 
$id= (isset($_GET['id'])) ? ($_GET['id']) : (0);
// $id est egal a $_GET['id'] si il existe, ou 0 par défaut

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/01/2012, 18h07   #6
Membre du Club
 
Homme
Inscription : septembre 2011
Messages : 71
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 71
Points : 53
Points : 53
Merci Jstevens et Ska_root pour vos réponses fructueuses.

En effet la lecture que j'ai entamée est de très bonne facture mais on ne trouve pas tous les cas de figures, voilà aussi la vocation du forum.

J'ai appliqué la recommandation de Jstevens, ce qui m'a bien avancé. Mais justement je me suis dis que d'autres cas de figures devraient être traité, et ce qui a comblé mon questionnement fut la tournure encore plus détaillée de Ska_root. Voilà tout est rentré dans l'ordre.

Par ailleurs il serait intéressant de trouver des cas de figures concrets au regard des failles qui peuvent résulter d'un développement inexpérimenté. Certes cela doit exister dans le forum ou ailleurs. Je m'en vais les découvrir.

Merci à vous tous.
proximacent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 20h48   #7
Candidat au titre de Membre du Club
 
Homme Stevens
Inscription : janvier 2012
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Stevens
Localisation : France

Informations forums :
Inscription : janvier 2012
Messages : 21
Points : 14
Points : 14
Citation:
Envoyé par ska_root Voir le message
et si $_GET['id'] est null ?
Exacte Au temps pour moi.

Cependant dans ta deuxième formulation, t'as oublié le intval du coup

Code :
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
ou bien avec is_numeric :
Code :
$id = isset($_GET['id']) && is_numeric($_GET['id']) ? $_GET['id'] : 0;
JStevens est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h30.


 
 
 
 
Partenaires

Hébergement Web