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 :

Filtre de formulaire


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 70
    Points : 59
    Points
    59
    Par défaut Filtre de formulaire
    Salut à tous,

    J'ai remarqué sur plusieurs sites que leur formulaire de recherche (par exemple) n’interprétait pas l'input de l'utilisateur bien qu'il soit affiché sur la page suivante.

    Exemple:
    Je suis sur monsite.com/recherche.php et vu que je suis un petit malin je vais rajouter dans l'input :"<H1>lol</H1>" je valide ma recherche.
    J'arrive donc sur monsite.com/resultat.php et la page m'affiche: Votre recherche est: "<H1>lol</H1>" sans interpréter l'injection.

    Quelle technique/filtre est utilisée pour empêcher cette interprétation?

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 992
    Points
    2 992
    Par défaut
    Bonjour

    Citation Envoyé par lulz17 Voir le message
    ... et vu que je suis un petit malin...
    mais moins que les webmasters en question

    En fait, c'est simple : tout qui est introduit par un utilisateur doit être "échappé". La fonction htmlentities le fait (http://php.net/manual/fr/function.htmlentities.php) mais bien d'autres aussi.

    Ici, le truc est donc de remplacer < par &lt; et > par &gt;. Ensuite, c'est cette chaîne-là qu'on recherche et qu'on affiche.

    Bonne journée.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    mais moins que les webmasters en question
    Effectivement

    La je suis d'accord, la fonction htmlentities devrait remplacer le < par &lt; dans le code source et à l'affichage dans le navigateur sortir "<".

    Mais normalement dans le code source de la page, je suis censé voir le &lt; et non le <. Pourtant j'ai bien vu le "<" dans le code source ... C'est ça qui m'étonne!

  4. #4
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Hello

    Si le but du webmestre était juste d'éviter les failles du types "injection SQL", le webmaster a probablement mis un "htmlentities" pour convertir les éléments lors de l'insertion dans la base SQL. Néanmoins, vuy ce que tu indiques, il a aussi ensuite utilisé un html-entity-decode pour réafficher les éléments normalement. Cependant si tel est le cas, ce n'est pas la chose à faire, car le code - qui était stocké de façon "safe" - va être réinterprété lorsque la page web sera recréée pour affichage ! (faille potentielle de "Cross site scripting")

    Nico
    si ton travail est difficile et tes résultats sont minces
    n’oublie pas qu’un jour, le grand chêne a été un gland comme toi.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    Salut Nicopilami,

    Je me doutais qu'il existait une fonction inverse mais je ne la connaissais pas. Maintenant oui

    En faite, je me suis trompé.. La fonction htmlentities est bien présente !!

    Mais au lieu de regarder dans le code source où j'aurai dû voir les &lt; etc .. ben je regardai dans l'inspecteur web ... Et donc c'était bien affiché comme des <> etc ..

    Petite fatigue qui m'a fait confondre l'inspecteur web avec le code source .. Sa me rassure car je ne comprenais pas comment le site pouvait affiché du code "non safe" sans l’interpréter!

    Merci pour vos réponses en tout cas



+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Définition filtre de formulaire
    Par b_steph_2 dans le forum Access
    Réponses: 1
    Dernier message: 04/01/2006, 13h12
  2. HELP - filtre dans formulaire
    Par gregius dans le forum IHM
    Réponses: 3
    Dernier message: 08/12/2005, 11h22
  3. Réponses: 3
    Dernier message: 24/10/2005, 11h32
  4. Pb filtre sous-formulaire
    Par fabrice518 dans le forum Access
    Réponses: 3
    Dernier message: 08/09/2005, 17h11
  5. Réponses: 3
    Dernier message: 23/02/2005, 16h51

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