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

Apache Discussion :

[Htaccess] Protection d'un dossier // autorisation d'un fichier


Sujet :

Apache

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut [Htaccess] Protection d'un dossier // autorisation d'un fichier
    Bonjour,

    j'ai un souci pour configurer la protection d'un dossier via htaccess
    J'aimerais que :
    - seul index.php soit accessible et
    - bloquer l'accès à tous les sous-dossiers et fichiers contenu dans admin


    Voici mon htaccess dans le répertoire admin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #--------------------------------------------------
    # Répertoire : /admin/
    #--------------------------------------------------
     
    <Directory "/admin/">
      AllowOverride All
      <Limit GET POST>
        Order Deny,Allow
        Deny from all
      </Limit>
    </Directory>
     
    <Files "/admin/index.php">
      <Limit GET POST>
        Allow from all
      </Limit>
    </Files>
    Pour le moment, j'ai un "Internal Server Error"

    Une idée ?
    Merci d'avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Les directives Directory et AllowOverride ne peuvent être placées dans un fichier .htaccess. Normalement le code ci-dessous placé dans un fichier .htaccess dans votre dossier admin devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Order allow,deny
    Deny from all
     
    <Files "index.php">
        Order allow,deny
        Allow from all
    </Files>
    Le problème c'est qu'à ce niveau le nom de fichier dans l'URL doit être explicitement mentionné (l'effet de DirectoryIndex ne semble pas pris en compte et vous ne pouvez pas non plus faire appel à Location ou LocationMatch dans un fichier .htaccess).

    Edit : Files n'accepte pas des chemins comme paramètre, simplement le nom du fichier.

    Voir peut être serait-il plus simple de passer par de l'URL Rewriting ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # Options +FollowSymLink
    RewriteEngine on
    RewriteRule ^(?:index\.php)?$ - [L]
    RewriteRule . - [F,L]
    (en partant ici du principe qu'il est placé dans le répertoire admin)

  3. #3
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    oulala.... intéressant tout ça !!!
    merci julp de t'être pencher sur mon problème.

    j'avance mais j'ai encore plusieurs soucis...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #--------------------------------------------------
    # Répertoire : /admin/
    #--------------------------------------------------
    # Interdiction de lister le contenu d'un dossier
    Options -Indexes
     
    #--------------------------------------------------
    # Règles de réécriture d'URL
    #--------------------------------------------------
    # Le serveur doit suivre les liens symboliques
    #Options +FollowSymlinks
    # Activation du module de réécriture d'URL
    RewriteEngine on
     
    # pour corriger le DirectoryIndex
    RewriteRule ^(?:index\.php)?$ - [L]
    RewriteRule . - [F,L]
     
    #--------------------------------------------------
    # Protection des fichiers
    #--------------------------------------------------
    # On refuse tous les accès sauf ceux qui sont précisés
    Order Deny,Allow
    Deny from all
     
    <Files "index.php">
      <Limit GET POST>
        Allow from all
      </Limit>
    </Files>
     
    <Files "test1.php">
      <Limit GET POST>
        Allow from all
      </Limit>
    </Files>
     
    <Files "test2.php">
      <Limit GET POST>
        Deny from all
      </Limit>
    </Files>
    Avec cette nouvelle config, seul index.php explicitement mentionné dans l'URL laisse afficher la page.

    OK pour :
    http://localhost/admin/index.php
    KO pour :
    http://localhost/admin
    http://localhost/admin/
    http://localhost/admin/test1.php
    http://localhost/admin/test2.php

    alors j'aimerais avoir par exemple (d'après ma config) :
    OK pour :
    http://localhost/admin/
    http://localhost/admin/index.php
    http://localhost/admin/test1.php
    KO pour :
    http://localhost/admin
    http://localhost/admin/test2.php

    ...

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    N'activez pas les deux c'est pour commencer plus ou moins redondant et ce qui passera la réécriture sera soumise à vos ACL (directives Order/Allow et Deny).

    Citation Envoyé par Tchupacabra
    Avec cette nouvelle config, seul index.php explicitement mentionné dans l'URL laisse afficher la page.
    Citation Envoyé par julp
    Le problème c'est qu'à ce niveau le nom de fichier dans l'URL doit être explicitement mentionné (l'effet de DirectoryIndex ne semble pas pris en compte et vous ne pouvez pas non plus faire appel à Location ou LocationMatch dans un fichier .htaccess).
    ^^ C'était aussi mon cas, on peut au pire, passer outre avec de la réécriture :

    (non testé)

  5. #5
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    c'est bon, je viens de retester... cela fonctionne.
    j'ai lu quelques compléments d'infos sur le RewriteRule... je comprends mieux la chose maintenant.

    Merci beaucoup julp

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

Discussions similaires

  1. htaccess protection dossier
    Par Doksuri dans le forum Langage
    Réponses: 1
    Dernier message: 09/01/2012, 01h38
  2. [.htaccess] protection d'un dossier
    Par warwar dans le forum Apache
    Réponses: 4
    Dernier message: 01/07/2009, 19h56
  3. Réponses: 4
    Dernier message: 26/04/2007, 10h23
  4. [Sécurité] [PHP5][.HTACCESS] Protection fichier avec .htaccess
    Par Righetto Dominique dans le forum Langage
    Réponses: 3
    Dernier message: 28/03/2006, 23h24
  5. htaccess protection du rép sauf index.php - possible?
    Par nagouille dans le forum Apache
    Réponses: 5
    Dernier message: 28/02/2006, 08h28

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