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 :

[Sécurité] Sécurité d'un .htaccess avec les includes ?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Lycéen
    Inscrit en
    Mars 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut [Sécurité] Sécurité d'un .htaccess avec les includes ?
    Hello !

    Je suis en train de bosser mon site, et j'ai remarqué une petite faille qui a failli me couter très cher. Je vous explique.

    J'ai une page index.php qui exécute une include("news.php") si aucun $_GET n'est détecté. Par contre s'il y a un $_GET, ça fait include($_GET["page"]).
    Par exemple :
    On clique sur le lien qui renvoie sur la page : index.php?page=mail.php
    -> La page mail.php est inclue.
    On clique sur le lien qui renvoie sur la page : index.php
    -> La page news.php est inclue.

    Alors voici mon problème.

    J'ai mis un dossier "admin" dans le même répertoire. Il se divise ensuite en plusieurs dossiers censés chacun modifier une partie du site (/gestion_news; /gestion_membres; etc) grâce à un script PHP/SQL.
    Si un petit plaisantin, après avoir scanné le site, s'amusait à écrire dans le navigateur le lien suivant :
    htp://monsite.mondomaine/index.php?page=admin/gestion_news/index.php
    Je suis cuit :s

    Je me suis dit alors que je pourrais peut être mettre un htaccess pour interdire le passage... Mais est-ce que ça marchera ?

    Voilà mon message est ENFIN terminé, merci d'avance ^^

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    c'est une très mauvaise idée d'exécuter aveuglément une entrée utilisateur.
    Dans ton cas, voici probablement la bonne solution :
    Tu détermine les cas possibles pour l'inclusion des fichiers, et tu autorises seulement un certain nombre de valeurs dans GET.
    Par exemple, si tu as "?page=mail", tu fais un include de mail.php
    Et dans tous les cas inconnus, tu affiches un message d'erreur, ou tu t'envoies un mail pour t'avertir qu'il y a un souci...

    Si tes pages sont générées dynamiquement et que tu ne peux pas prévoir leur nom à l'avance, c'est probablement dû à un mauvais choix de conception.

  3. #3
    Membre à l'essai
    Profil pro
    Lycéen
    Inscrit en
    Mars 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Oui j'y ai pensé mais il y a une 20aine de possibilités donc

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par NeuroGen
    Oui j'y ai pensé mais il y a une 20aine de possibilités donc
    T'as la flemme de coder ? t'as un rendez-vous ce soir ?

  5. #5
    Membre à l'essai
    Profil pro
    Lycéen
    Inscrit en
    Mars 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Ben c'est que c'est vrai que je suis assez flemmard, et que j'aime bien les raccourcis

  6. #6
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par NeuroGen
    j'aime bien les raccourcis
    Bah tu vois le dernier que tu as pris te menait à une faille de sécurité ! En l'occurence il y a peut-être un raccourci intelligent, comme souvent, mais là il me saute pas aux yeux.

  7. #7
    Membre à l'essai
    Profil pro
    Lycéen
    Inscrit en
    Mars 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Peut être que l'on peut refuser l'include si le $_get contient "admin" ?

  8. #8
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par NeuroGen
    Peut être que l'on peut refuser l'include si le $_get contient "admin" ?
    C'est du bricolage... Si on te demande, tu ne me connais pas, et tu ne m'as jamais parlé !

  9. #9
    Membre à l'essai
    Profil pro
    Lycéen
    Inscrit en
    Mars 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut


    Je crois que je vais la jouer sécu en faisant ce que tu m'as dit au début, soit une condition switch-case ...

    Merci bien

  10. #10
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    le plus simple serait déja de vérifier qu'il ne peut pas inclure des fichiers qui montrent tes mots de passe etc ...

    alors pour ca le switch est super.

    si tu veux pas te faire chier, appelle tes pages d'une manière bien précise, du coup tu peux vérifier par exemple que il n'y a pas de / dans le GET, et que des caractères alpha, ou que des chiffres etc ...

    Apres si tu as que "admin" qui fait foirer un truc, bah tu peux toujours faire un cas spécial.

    Mais bon si pour arriver sur le compte admin il faut juste faire ca ... bonjour la sécurité, tu as pas un acces par session ?

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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