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 et variable d'environnement


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Par défaut htaccess et variable d'environnement
    Bonjour, je fais un site Internet en PHP. J'utilise un script php et mysql pour que mes utilisateurs se connecte. Ils ont acces a des documents qui sont en ligne. Je voudrait proteger ces documents par un .htaccess.
    Le probleme est le suivant, je veux que si mon user est connecte, il ne voit pas la fenetre d'authentification du .htaccess (= Passer outre la fenetre d'authentification quand je souhaite)

    J'avais pensé a deux solutions, que je n'arrive pas a faire fonctionner :

    1/ Utiliser quelque chose comme un require <variable d'environement>, que j'aurai préalablement initialiser lors de la connexion a mon site de mon user.

    2/ Utiliser le HTTP_REFERER, si il n'est pas nul alors ok, sinon forbidden. Vu que qi on rentre une url a la main, cette variable d'environnement n'est pas initialiser, je pense que ca doit etre le plus simple.

    Voila le souci si quelqu'un peut m'aider, je lui en serai très reconnaissant.

  2. #2
    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
    Par défaut
    De mémoire, je crois que ce n'est pas possible de rendre l'authentification par .htaccess conditionnelle : il n'y a pas de bloc <IfEnv> ou un truc de ce genre dans Apache et les directives d'authentification ne prennent pas de paramètre supplémentaire pour vérifier une condition. J'avais essayé un moment mais sans succès. Il doit y avoir une discussion sur le sujet sur le forum mais je ne la retrouve plus

    Peut-être une autre piste : faire une fausse réécriture d'URL vers une extension bidon et mettre les directives d'authentification dans un bloc <FilesMatch> sur cette extension, par exemple. La difficulté c'est de faire en sorte qu'ensuite l'extension bidon n'empêche pas le site de fonctionner, donc il faut sûrement mettre un Options +MultiViews. A tester.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Par défaut
    ok merci, ca m'a l'air un peu compliqué ton histoire .
    Il n'y a pas de balise <Ifenv> mais il y a le "require env" ou le "allow from env=". Mais bon j'ai pas réussi. Par contre j'ai trouvé une autre solution, c'est pas super mais c'est mieux que rien, voila en gros l'idée :

    Mes liens dans mon site du style /doc/machin.txt , je vais les remplacer par doc.php?nom=machin.txt. Dans mon doc.php je pourrai tester si le fichier nécessite une connecion ou pas, et apres faire appel au document. Et dans un fichier .htacces je vais forcer le telechargement. Ainsi les gens ne veront jamais l'url (en bas dans la barre d'état, ou en haut dans la barre d'adresse). Donc apres ca sera au pifometre pour ouvrir un fichier !

    Voila tu en pense quoi ?

  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
    Par défaut
    Effectivement, il y a le allow from env, je l'avais oublié celui-là. Dans ce cas, on peut essayer en ajoutant un satisfy any qui dira globalement "si un allow passe (donc celui avec from env), alors pas d'authentification". C'est une bonne idée, à tester.

    De toute façon, si tu veux désactiver l'authentification basique selon des critères propres à PHP (variable de session par exemple), tu n'y arriveras pas. Donc le mieux, dans ce cas c'est effectivement de passer par un script PHP (explicitement indiqué dans l'URL ou provenant d'une réécriture) qui vérifie cette variable de session ou le cookie et qui autorise ou non le téléchargement. La difficulté sera de déclencher une authentification basique si le critère n'est pas satisfait : c'est faisable en renvoyant les bons en-têtes HTTP au navigateur mais ce sera aussi à ton script de vérifier que cette authentification est correcte. Autrement dit, tu gères tout par PHP, plus de .htaccess avec des AuthUserFile, etc.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Par défaut
    En faite j'ai laissé tomber la solution du script php, en faite je faisait un header(location le probleme c'est que ca ne supporte pas les accents.

    Donc par la suite j'ai essayer avec du javascript location.href=, la ca marche, mais en faite en regardant la source de la page on voir l'adresse, donc c'est naze aussi.

    J'aimerais persister sur l'idée du htaccess, mais j'ai un peu de mal a comprendre la logique. Est ce que tu pourrait m'aider, je pense que ca doit etre quelque chose du genre ?? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <LIMIT GET POST>
    satisfy any
    allow from env=HTTP_REFERER
    </LIMIT>

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Par défaut
    J'ai vu une de tes réponses d'une autre discussion similaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^<a href="http://.*\.monsite\.com/" target="_blank">http://.*\.monsite\.com/</a> [NC]
    RewriteRule \.(flv|Flv)$ - [F,NC]
    </IfModule>
    SetEnvIfNoCase Referer "^https?://([^/]*)?fmonsite\.com/" local_ref=1
    SetEnvIf Referer ^$ local_ref=1
     
    <FilesMatch "\.(flv|Flv)$">
    Order allow,deny
    Allow from env=local_ref
    </FilesMatch>
    Mais moi j'aimerais pour tous les fichiers que il y ai un HTTP_REFERER. Tu crois que tu arriverai a formuler ca en langage .htaccess

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/08/2012, 22h28
  2. [langage] Création de variable d'environnements
    Par Smaugg dans le forum Langage
    Réponses: 20
    Dernier message: 26/04/2004, 09h32
  3. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  4. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21
  5. Réponses: 4
    Dernier message: 18/07/2002, 13h32

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