[php] Avis sur la sécurité de mon code (include)

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par GarGamel55, 1 Octobre 2006.

  1. GarGamel55
    GarGamel55 WRInaute discret
    Inscrit:
    28 Septembre 2006
    Messages:
    106
    J'aime reçus:
    6
    Bonjour à tous,

    Je voulais avoir votre avis sur la sécurité (ou l'insécurité) de ce bout de code :

    Code:
    $p='';
    if (isset($_GET['page'])) $p=$_GET['page'];
    if (!empty($p) && file_exists('rep/'.$p.'.php')) include('rep/'.$p.'.php');
    else include('accueil.php');
    Depuis mon index j'appelle différentes pages qui viennent s'ouvrir dans le centre de celui-ci (pseudo frame). Evidemment cela implique d'éventuels problèmes de sécurité.
    N'étant pas du tout un hacker averti, je voulais savoir si ce code est exploitable par une personne mal attentionée ? :twisted:

    Merci d'avance
     
  2. Kaio
    Kaio Nouveau WRInaute
    Inscrit:
    9 Août 2006
    Messages:
    11
    J'aime reçus:
    0
    Salut,

    On peut inclure n'importe quelle page php de ton site et pas seulement dans le répertoire "rep".

    exemple : ?page=../rep_admin/index

    ++
     
  3. GarGamel55
    GarGamel55 WRInaute discret
    Inscrit:
    28 Septembre 2006
    Messages:
    106
    J'aime reçus:
    6
    Je suis en local uniquement pour l'instant et quand j'appelle un fichier en dehors du repertoire 'rep' je retombe pourtant sur la page d'accueil.
    (mais comme je précise je suis pas hacker ...)

    et comment je peux y rémédier, via un array qui liste les pages autorisés ?
     
  4. GarGamel55
    GarGamel55 WRInaute discret
    Inscrit:
    28 Septembre 2006
    Messages:
    106
    J'aime reçus:
    6
    J'ai rajouté ceci

    Code:
    $p='';
    if (isset($_GET['page'])) $p=$_GET['page'];
    $pageok = array('', 'accueil', 'page1', 'page2'....);
    if (!in_array($p, $pageok)) { 
    
       include('accueil.php');
    }
    if (!empty($p) && file_exists('rep/'.$p.'.php')) include('rep/'.$p.'.php');
    else if (!empty($p) && file_exists($p.'.php')) include($p.'.php');
    else include('accueil.php');
    
    Est-ce suffisant ?[/quote]
     
  5. rog
    rog WRInaute passionné
    Inscrit:
    21 Septembre 2006
    Messages:
    1 346
    J'aime reçus:
    0
    j'éviterai ce type de shema

    le mécanisme empêche potentiellement une injection jusqu'au jour ou l'on découvre un bug sur une fonction

    et la ton filtre saute et tu es vulnerable

    faut savoir que les caractères du style ? & @ et # modifient les interprétations d'url

    pour injecter ton site faudrait bugger in_array et file_existe ce qui n'est pas possible actuellement (à ma connaissance)

    mais la vraie solution est d'inclure une constante

    rog
     
  6. GarGamel55
    GarGamel55 WRInaute discret
    Inscrit:
    28 Septembre 2006
    Messages:
    106
    J'aime reçus:
    6
    Tu pourrais développer stp ? :idea:
     
  7. rog
    rog WRInaute passionné
    Inscrit:
    21 Septembre 2006
    Messages:
    1 346
    J'aime reçus:
    0
    aie

    une variable est une donnée qui est modifiable
    une constante est une donnée que l'on ne peut modifier

    voir define

    rog
     
  8. Kaio
    Kaio Nouveau WRInaute
    Inscrit:
    9 Août 2006
    Messages:
    11
    J'aime reçus:
    0
    Tu aurais pu simplement virer les "../" de ta variable $p

    Faire un tableau c'est bien mais pas vraiment pratique puisque tu dois ajouter chaque nouvelle page que tu autorises...

    Le mieux c'est de faire de l'url rewriting. Si on tente de se ballader sur ton site par l'include avec du "../" ça ne marche pas car le serveur tente d'abord de changer de répertoire... 8)
     
  9. rog
    rog WRInaute passionné
    Inscrit:
    21 Septembre 2006
    Messages:
    1 346
    J'aime reçus:
    0
    même si la chaine commence par un @ ?

    rog
     
  10. GarGamel55
    GarGamel55 WRInaute discret
    Inscrit:
    28 Septembre 2006
    Messages:
    106
    J'aime reçus:
    6
    lol, j'étais parti sur complétement autre chose ...

    Oui l'array n'est pas ultra pratique, mais le nombre de page que je devrais autoriser sera limité

    Et j'utilise aussi l'url rewriting

    8)

    Merci pour vos réponses
     
Chargement...
Similar Threads - [php] Avis sécurité Forum Date
Astuce [PHP] Récolter ville, pays du visiteur Développement d'un site Web ou d'une appli mobile 9 Mars 2021
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 14 Septembre 2019
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 12 Janvier 2017
[PHP] Cookie vide dans une fonction, complet juste avant ou après Développement d'un site Web ou d'une appli mobile 25 Novembre 2014
[php] Cookie d'un domaine vers un sous-domaine Développement d'un site Web ou d'une appli mobile 29 Août 2014
[PHP]Cci mails Développement d'un site Web ou d'une appli mobile 18 Août 2014
[PHP] gethostbyname Développement d'un site Web ou d'une appli mobile 15 Février 2014
[PHP] file_get_contents retourne un "Connection timed out" Développement d'un site Web ou d'une appli mobile 14 Février 2014
[PHP] Regex Complexe Développement d'un site Web ou d'une appli mobile 29 Octobre 2013
[PHP] Formulaire dynamique Développement d'un site Web ou d'une appli mobile 2 Mai 2013
[php] error suite à code antiduplication Développement d'un site Web ou d'une appli mobile 5 Février 2013
[PHP] Condition et include Développement d'un site Web ou d'une appli mobile 31 Janvier 2013
[PHP] comprendre ce code pour pseudo-frame Développement d'un site Web ou d'une appli mobile 28 Décembre 2012
[PHP] Requête très lente Développement d'un site Web ou d'une appli mobile 22 Septembre 2012
[PHP] Question technique Regex Développement d'un site Web ou d'une appli mobile 28 Juillet 2012
[PHP] file_get_contents sur le serveur même... Développement d'un site Web ou d'une appli mobile 9 Juillet 2012
[PHP] FILTER_VALIDATE_IP et REMOTE_ADDR Développement d'un site Web ou d'une appli mobile 8 Juillet 2012
[PHP] Requête PDO à modifier Développement d'un site Web ou d'une appli mobile 13 Mai 2012
[PHP] Détecter l'OS, le navigateur et la langue [Résolu] Développement d'un site Web ou d'une appli mobile 4 Mars 2012
[Php] Vérifier la présence d'un slash en fin d'url Développement d'un site Web ou d'une appli mobile 2 Mars 2012