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 :

[debutant] Faille Sécurité XSS


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut [debutant] Faille Sécurité XSS
    Je pense avoir compris ce qu'est une faille XSS
    Cependant soit l'URL suivante que je tape dans la barre d'adresse (ID est un entier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    http://localhost/test.php?ID="?><script 
    type="text/javascript">alert('Faille XSS !')&lt;script&gt;
    Corrigez moi sur le traitement à apporter
    Pour éviter cette faille, je dois au début de mon script test.php

    1) récupérer la variable ID
    2) la traiter avec htmlspecialchars
    3) rebatir l'url et renvoyer la page une seconde fois

    Est-ce bien la méthode ? (c'est le renvoi de la page une seconde fois qui m'interpelle ....

    Merci à tous

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    ça marche pas comme xss. sauf si tu fabriques tes fichiers php à la volée puis que tu les compile... c'est assez rare.

    Ce qu'il faut c'est lorsque tu affiches dans du html le contenu de variable (issu d'une base de donnée ou d'une saisie utilisateur ), c'est un htmlspecialchar(). On est d'accord. Il n'y a plus de risque de balise (au sens html) indésirable parce que tous les < seront remplacé par des &gt; .

    Bon, après si tu as besoin d'avoir de la mise en forme, soit tu passes par du bbcode soit tu fais une liste de balises autorisées (em, strong, i, u, ... ) et via des expressions régulieres tu supprime tout ce qui n'est pas autorisé.

    Une fois que ceci est dit, il faut le faire avec méthode pour ne le faire qu'une fois ( protection de l'affichage ou/et protection des entrée )

    normalement tu dois pourvoir traiter une donnée
    ID=fjdlkdsjflksdjl<script>demoniaque()</script>
    sans avoir à recharger ta page. ta couche de validation & nettoyage des données ne devrait pas demander un rechargement de la page. Eventuellement tu peux demander à l'utilisateur de resaisir, mais sinon...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Merci pour le coup de pouce.

    Donc, pour gérer l'eventuelle présence de script incorporé dans l'URL pour ma variable ID, je peux simplement coder en début de mon fichier test.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (intval($_GET['ID'])<>$_GET['ID']) {
         header("Location:erreur.php");
    };
     
    .... suite du programme
    J'éjecte l'utilisateur de test.php et l'expédie vers erreur.php
    C'est bien cela ?

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    oui tu pourrais faire ça. sans enthousiasme. La page d'erreur c'est l'arme atomique en terme de navigation web, remettre le formulaire avec des explications c'est plus gentil.

    bon, je te ferai pas de remarque sur ta notation très SQL de la différence, bien loin de la syntaxe officielle... d'autant que "0" == 0 est vrai en php ainsi que "0" !== 0.

    un petit truc cependant. Généralement avec les superglobale, il vaut mieux faire un ISSET() ou un EMPTY() dessus avant pour savoir si elles sont définies... si tu attends des entiers qui peuvent être nuls attention à la remarque précédente. Ya des subtiles différence entre isset() et empty() que je te laisse découvrir.

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

Discussions similaires

  1. [Sudoers] Faille sécurité
    Par nsvir dans le forum Sécurité
    Réponses: 21
    Dernier message: 18/04/2013, 14h39
  2. [MySQL] Sécurité contre failles XSS et injections SQL et optimisation du formulaire
    Par kenjiendo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/08/2011, 11h35
  3. [TinyMCE] Sécurité : faille XSS et upload de fichiers malicieux pour l'insertion d'image
    Par Lucas Panny dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 21/01/2011, 10h33
  4. Réponses: 2
    Dernier message: 06/04/2006, 11h57
  5. [Debutant] Problème de sécurité dans un applet
    Par peaceinpal dans le forum Applets
    Réponses: 3
    Dernier message: 09/09/2004, 20h56

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