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 :

Limiter les CGI sur 1 répertoire seulement


Sujet :

Apache

  1. #1
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut Limiter les CGI sur 1 répertoire seulement
    Bonjour à tous,

    J'aimerais cantonner l'exécution des scripts cgi aux seuls répertoires se nommant CGI et ce pour tous les sites hébergé sur mon serveur.

    Voilà ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ScriptAlias /CGI/ "/home/*/CGI/"
    <Directory /home/*/CGI>
     AllowOverride None
     Options ExecCGI
     Order allow,deny
     Allow from all
    </Directory>
    Quelqu'un pourrait m'expliquer pourquoi ça ne fonctionne pas ? Je comprends rien du tout.

    Merci pour votre aide.

  2. #2
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    J'ai fini par trouver. Mais bon j'en comprends pas plus pour autant

    Voilà ce que c'est fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <Directory />
     AllowOverride None
     Options ExecCGI
     Order allow,deny
     Allow from all
    </Directory>
     
    <Directory /home/*/CGI>
     AllowOverride None
     Options ExecCGI
     Order allow,deny
     Allow from all
    </Directory>
    J'interdis les cgi partout sauf dans le répertoire CGI qui est contenu par les utilisateurs.

    Je me félicite, d'avoir trouvé la réponse

  3. #3
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Bonjour a tous,

    Je me permets de rouvrir ce thread parce qu'en fait ce que j'ai voulu faire ne fonctionne pas.
    En gros, voila ce que j'essaie de faire en vain :
    • un site principal nomme siteprincipal.com
    • site1.com
    • site2.com
    • user1.siteprincipal.com qui est site1.com mais accessible de cette maniere
    • user2.siteprincipal.com qui est site2.com mais accessible de cette maniere
    • un repertoire personnel pour le root accessible par siteprincipal.com:8080
    • les scripts CGI ne fonctionnent que dans le repertoire CGI


    Voila mon httpd.conf
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    NameVirtualHost *:80
    <VirtualHost *:80>
        DocumentRoot /home/siteprincipal
        ServerName siteprincipal.com
        ErrorLog logs/siteprincipal.com-error_log
        CustomLog logs/siteprincipal.com-access_log common
     
        <Directory /home/siteprincipal/restreint>
        	Options none
        	Authname prive
        	Authtype basic
        	AuthUserFile /home/conf_restreint 
        	Require valid-user
        	Order allow,deny 
        	Allow from all
        </Directory>
    </VirtualHost>
     
    Listen *:8080
    <VirtualHost *:8080>
        DocumentRoot /home/personnel
        ServerName siteprincipal.com
        ErrorLog logs/siteprincipal.com-error_log
        CustomLog logs/siteprincipal.com-access_log common
    <Directory /home/personnel/>
        AllowOverride None
        Order allow,deny
        allow from all
    </directory>
    </VirtualHost>
     
    <VirtualHost *:80>
        DocumentRoot /home/site1
        ServerName site1.com
        ErrorLog logs/site1.com-error_log
        CustomLog logs/site1.com-access_log common
    </VirtualHost>
     
    <VirtualHost *:80>
        DocumentRoot /home/site1
        ServerName user1.siteprincipal.com
        ErrorLog logs/site1.com-error_log
        CustomLog logs/site1.com-access_log common
    </VirtualHost>
     
    <VirtualHost *:80>
        DocumentRoot /home/site2
        ServerName site2.com
        ErrorLog logs/site2.com-error_log
        CustomLog logs/site2.com-access_log common
    </VirtualHost>
     
    <VirtualHost *:80>
        DocumentRoot /home/site2
        ServerName user2.siteprincipal.com
        ErrorLog logs/site2.com-error_log
        CustomLog logs/site2.com-access_log common
    </VirtualHost>
     
    <Directory /home/*>
        AllowOverride None
        Options -ExecCGI
        Order deny,allow
        deny from all
    </directory>
     
    <Directory /home/*/CGI>
        AllowOverride None
        Options +ExecCGI
        Order allow,deny
        allow from all
    </directory>
    Je ne comprends pas pourquoi ca ne fonctionne pas. Quelqu'un peut-il m'eclairer ?
    Desole pour les accents, je ne sais pas pourquoi, mais mes boutons avec les accents ne fonctionnement plus...

    Merci pour votre aide.

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par LhIaScZkTer Voir le message
    Je ne comprends pas pourquoi ca ne fonctionne pas.
    Moi non plus, vu que tu ne décris absolument pas ce qu'il se passe. Quels sont les symptômes ? Quelles URL utilises-tu pour tester et quel comportement souhaiterais-tu voir pour tes différents sites (avec des URL d'exemple, de préférence).

  5. #5
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Merci pour ta réponse _Mac_,

    Ce que je souhaiterais, c'est mettre en place une délégation qui permettrait aux utilisateurs de créer un répertoire pour héberger leurs scripts. Donc dans les autres répertoires les scripts seront interdit.

    Pour site1.com qui est un virtualhost :
    http://site1.com les pages .php ne fonctionneront pas

    Mais :
    http://site1.com/CGI les pages .php fonctionneront

    J'ai donc ajouté un conteneur directory :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <Directory />
        AllowOverride Options
        Options None
        Order deny,allow
        deny from all
    </directory>
    En faisant ça, apache ne se connecte plus au ServerName principal, mais au premier virtualHost. J'ai donc dû définir un virtualHost pour siteprincipal.com.

    En plus, le code php est toujours exécuté et ce, peu importe le répertoire, ce qui est encore plus embêtant.

    En fait, je ne comprends plus rien et je ne sais même plus ce que je voulais faire, il y a tout qui bug...

  6. #6
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Je crois que je vais devenir fou.

    Voila ce que j'ai dans mon fichier hosts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    127.0.0.1 siteprincipal.com
    127.0.0.1 user1.siteprincipal.com
    127.0.0.1 user2.siteprincipal.com
    127.0.0.1 site1.com
    127.0.0.1 site2.com
    Voila mon fichier httpd.conf :
    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
    43
     
    ServerName siteprincipal.com
    DocumentRoot /home/siteprincipal
     
    NameVirtualHost *:80
    <virtualHost *:80>
    </virtualHost>
     
    <VirtualHost *:80>
        DocumentRoot /home/site1
        ServerName site1.com
        ErrorLog logs/site1.com-error_log
        CustomLog logs/site1.com-access_log common
    <Directory /home/site1>
        Options None
        Order allow,deny
        allow from all
    </directory>
    <Directory /home/site1/CGI>
        AllowOverride None
        Options ExecCgi
        Order allow,deny
        allow from all
    </directory>
    </VirtualHost>
     
    <VirtualHost *:80>
        DocumentRoot /home/site1
        ServerName user1.siteprincipal.com
        ErrorLog logs/site1.com-error_log
        CustomLog logs/site1.com-access_log common
    <Directory /home/site1>
        Options None
        Order allow,deny
        allow from all
    </directory>
    <Directory /home/site1/CGI>
        AllowOverride None
        Options ExecCgi
        Order allow,deny
        allow from all
    </directory>
    </VirtualHost>
    Le virtualhost vide permet de tomber sur siteprincipal.com, sinon ca fonctionne pas.
    Le second virtualhost normalement dans son repertoire racine ne devrait pas executer les . php. Pourtant quand je fais http://site1.com/test.php la page fonctionne. Les scripts qui se trouve dans le sous repertoire http://site1.com/CGI fonctionnent ce qui est l'effet voulu.

    Ce que je n'arrive pas a comprendre c'est pourquoi je n'arrive pas a empecher l'execution de scripts.

  7. #7
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est normal qu'il exécute les scripts PHP dans le second VH, tu ne lui dis pas de ne pas le faire. Pour savoir comment l'empêcher, tu peux nous donner la conf d'Apache pour PHP ? Copie-colle toutes les lignes de la conf Apache qui parlent de PHP.

  8. #8
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Merci beaucoup pour ton aide

    Les lignes qui parlent de php, il y en a pas beaucoup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    LoadModule php5_module modules/libphp5.so
     
    DirectoryIndex index.php index.html ...
     
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    Voilà, elles sont toutes là.

    Merci encore pour ton aide.

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    OK. Qu'est-ce que tu voudrais qu'il se passe quand on demande un .php ? "ne devrait pas executer les . php" est un peu flou. Car on peut ajouter une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddType text/plain .php
    ou autre dans le VH, ça ne sera pas satisfaisant du tout car on téléchargera le code PHP

  10. #10
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Ha, au risque de passer pour un boulet... j'avais pas pense a regarder dans le conf.d, il y a le php.conf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <IfModule prefork.c>
      LoadModule php5_module modules/libphp5.so
    </IfModule>
    <IfModule worker.c>
      LoadModule php5_module modules/libphp5-zts.so
    </IfModule>
     
    AddHandler php5-script .php
    AddType text/html .php
     
    DirectoryIndex index.php
    Ce que je reverai qu'il se passe quand j'appelle un .php dans /home/site1 c'est qu'il ne les execute pas, mais en revanche dans /home/site1/CGI qu'il l'execute.

    Merci encore pour ton aide.

  11. #11
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par LhIaScZkTer Voir le message
    c'est qu'il ne les execute pas
    Certes mais Apache en fait quoi, du code PHP du fichier demandé ? Il le renvoie au navigateur ? C'est ce que fait la ligne de conf que je donnais et à mettre dans ton VH mais c'est très dangereux car tout le monde a accès au code PHP de tes pages. Ou alors ce n'est pas gênant car tu n'as écrit aucune page PHP ; s'il y en a, c'est l'utilisateur qui les y a mises et c'est son problème si on voit le code ?

  12. #12
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Merci pour ta réponse _Mac_,

    Idéalement, il renvoie une erreur forbiden ou quelque chose dans le genre. Tu crois que c'est faisable ?

    Merci.

  13. #13
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Oui, c'est facile dans ce cas : tu ne mets pas le AddType que je donne et à la place tu mets ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule \.php$ - [F]
    A placer dans le bloc <VirtualHost> de site1.com après CustomLog par exemple.

Discussions similaires

  1. Supprimer les Warnings sur certains répertoire
    Par ALX79 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 22/01/2008, 18h49
  2. C# Récupérer les droits sur un répertoire
    Par PORTES dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/10/2006, 19h03
  3. Comment positionner les droits sur un répertoire?
    Par RolandB dans le forum Général Java
    Réponses: 8
    Dernier message: 07/10/2006, 02h23
  4. Réponses: 1
    Dernier message: 20/09/2006, 00h29
  5. changer les droits sur un répertoire
    Par pricrot dans le forum VBScript
    Réponses: 2
    Dernier message: 07/09/2006, 10h27

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