IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fiabilité de $_SERVER['PHP_SELF']


Sujet :

Langage PHP

  1. #1
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut Fiabilité de $_SERVER['PHP_SELF']
    Bonjour à tous

    Mon but est de faire un peu comme les FrameWork, un routage (un bien grand mot pour le moment).

    Dans un premier temps, je compte seulement vérifier la page demandée, et c'est théoriquement $_SERVER['PHP_SELF'].
    Donc de vérifier si celle page se trouve bien parmi une liste de pages (dans un tableau, constantes, peu importe).
    En faite, à l'heure actuel j'ai une classe (du nom de Template pour le moment) ou dans toutes les pages je renseigne le nom de la page.
    Ensuite, je vérifie que le PHP_SELF existe bien dans la liste des pages et qu'il correspond au nom/paramètre passé au template.

    Plus tard, je pense me pencher sur des trucs comme QUERY_STRING, REQUEST_URI, etc ... pour ce faire.
    Disons que pour le moment je n'est pas encore de système de routage, les pages sont de vrai pages, mais j'y pense


    Du coup, je me pose la question si le PHP_SELF que le serveur renvoie est vraiment fiable ?
    Y aurait il pas un cas ou elle contiendrait rien, ou pire, un acte malveillant d'un pirate/hacker qui aboutirait à une mauvaise info ou déboussoler le serveur ?

    Qu'en pensez-vous ?

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2010
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    Oui c'est vraiment fiable

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Bon, et bien on va s'y allez alors

    Merci pour la réponse.

  4. #4
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Euh, désolé mais non ce n'est pas fiable. Contrairement à son nom, cette variable est une variable client

    Edit: Une explication ici

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par Halleck
    Contrairement à son nom, cette variable est une variable client
    Effectivement, je vois ce que tu veux dire et les exemples donnés dans le topic, et j'avoue ne pas avoir pensé au truc, à ce type de piratage.
    Mon pif s'agitait quelque peu, et du coup j'ai bien fait de poser la question.
    Merci pour ces précisions.


    Ceci dit, comme je l'avais évoqué, j'avais pour intention de ne pas utiliser directement le PHP_SELF comme ça, mais de vérifier l'existence de la page demandée (donc de sa valeur) parmi une liste de fichiers (de pages).
    Donc quelque part, je me dis qu'une tentative d'attaque devrait être inopérante.
    Enfin, c'est ce que je me dis.
    Pour résumer, pour le moment je fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    self::$page = basename($_SERVER['PHP_SELF']);
    if ($this->pageExists(self::$page) == false)  throw new MyException('('.__CLASS__.') ERREUR : La page demandée ('.self::$page.') n\'existe pas.', E_USER_ERROR);

    A coté de ça, et en regardant un peu comment les FrameWork font leur système de routage, j'ai l'impression que c'est bien plus compliqué que ça.
    En faite, tout passe en paramètre, et dans une structure MVC, le modèle par exemple est passé en paramètre.
    Exemple : index.php?model=un_model

    Bref ... faire un routage, c'est pas gagné

Discussions similaires

  1. Existe t-il 1 équivalent $_SERVER[PHP_SELF] en javascript?
    Par lolymeupy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/08/2008, 16h18
  2. Multi-formulaires et $_SERVER['PHP_SELF']
    Par gantec dans le forum Langage
    Réponses: 4
    Dernier message: 10/09/2007, 16h36
  3. petite question avec $_SERVER['PHP_SELF']
    Par akara dans le forum Langage
    Réponses: 4
    Dernier message: 04/09/2007, 07h06
  4. action="<?php echo $_SERVER['PHP_SELF'];?>
    Par thechakib dans le forum Langage
    Réponses: 5
    Dernier message: 11/06/2006, 16h56
  5. [Configuration] affichage $_SERVER['PHP_SELF']
    Par laloupiote dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 14
    Dernier message: 12/01/2006, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo