captain_torche Posté 16 Mars 2009 Posté 16 Mars 2009 Salut à tous ! Je voudrais faire en sorte que mon fichier .htaccess limitant l'accès à certains répertoires ne soit pas fonctionnel en local. En gros, je voudrais que pour l'accès local (localhost ou 127.0.0.1), il ne demande pas de mot de passe, mais qu'il en demande un une fois uploadé sur le serveur. Il comporterait bien sûr un chemin vers le fichier .htpassword valable uniquement sur le serveur distant. Est-ce possible, et dans ce cas, comment le faire ?
destroyedlolo Posté 16 Mars 2009 Posté 16 Mars 2009 Salut, Si j'ai bien compris, tu ne veux pas que le .htaccess soit actif sur ton serveur de dev, c'est ca ? Alors 2 solutions : La solution bourrin : sur ton serveur de dev, tu modifies la config d'apache pour ne plus prendre en compte le .htaccess Par exemple, je ferai AccessFileName .localaccess ce qui te permet de garder la possibilite d'utiliser quant meme des directives locales si le besoins s'en fait sentir (genre pour ajouter des actions, des footer, et autres joyeusetes que j'utilise enormement). La solution plus "reflechie" est d'autorise systematiquement '127.0.0.1' (je ne me souviens plus de la directive mais c'est tout simple a faire, voir la doc). Perso, je prendrais ... la solution bourrin. Car la seconde creer une fail de securite si qq'un arrive a ouvrir un tunnel depuis ton serveur. Heu ... sauf que je mes serveurs de devs sont a l'identique de ma prod donc inclus aussi les protections
captain_torche Posté 16 Mars 2009 Auteur Posté 16 Mars 2009 J'avais tenté le "allow from 127.0.0.1", mais ça n'avait pas marché, je ne sais pas où le mettre. Sinon, pas de souci de faille de sécurité, le serveur de dev est mon PC perso. Edit : je veux quand même que les fichiers htaccess soient lisibles en local, ne serait-ce que pour les réécritures d'url
jcaron Posté 16 Mars 2009 Posté 16 Mars 2009 J'ai failli dire que ce n'était pas possible avec les directives Apache standard, mais j'ai trouvé une solution... Encadre tes directives d'authentification (ou au minimum le require valid-user) dans tes .htaccess par <IfDefine pas_dauth> et </IfDefine>. Ensuite lance ton serveur local en ajoutant un -Dpas_dauth (suivant comment tu le lances la méthode ne sera pas la même). Tu peux utiliser n'importe quelle autre mot à la place de "pas_dauth" évidemment. http://httpd.apache.org/docs/1.3/mod/core.html#ifdefine Note cependant que si ton code utilise ensuite le nom de l'utilisateur connecté ($_SERVER['REMOTE_USER']) ça ne marchera évidemment pas... Jacques.
captain_torche Posté 16 Mars 2009 Auteur Posté 16 Mars 2009 Merci jcaron ! Reste plus qu'à trouver comment modifier les options de lancement d'apache dans easyphp
Jeanluc Posté 16 Mars 2009 Posté 16 Mars 2009 Tu peux mettre les lignes qui protègent l'accès en commentaire dans ton .htaccess local en les faisant débuter par #. Le tout est de ne pas oublier de supprimer les # quand tu mets le site en ligne. Jean-Luc
captain_torche Posté 16 Mars 2009 Auteur Posté 16 Mars 2009 ça, c'est le plus facile, effectivement, mais je veux pouvoir uploader (ou à contratrio downloader) tout le site sans avoir à éditer de fichier après coup
destroyedlolo Posté 16 Mars 2009 Posté 16 Mars 2009 J'avais tenté le "allow from 127.0.0.1", mais ça n'avait pas marché, je ne sais pas où le mettre. Il faut jouer dans l'ordre des Deny / Allow pour que ca joue. Je n'ai pas le temps de faire des essaies, mais de memoire, les Deny ont priorite sur les allows par defaut donc les protections ont priorite sur ton autorisation locale. Il faut donc donner priorite au Allow sur le Deny. Sinon, pas de souci de faille de sécurité, le serveur de dev est mon PC perso. Le probleme n'est pas sur ton serveur de dev mais sur ta prod si tu copies les .htaccess tel quel : si le gas arrive a faire du Spoofing sur les IP, ou s'il arrive a ouvrir un tunel depuis ton serveur, il passera a travers tes protection. L'idee donnee par jcaron me semble pas mal. Bye Lolo
captain_torche Posté 16 Mars 2009 Auteur Posté 16 Mars 2009 C'est pas super-critique non plus; dans le pire des cas, il lance manuellement une tâche cron
jcaron Posté 16 Mars 2009 Posté 16 Mars 2009 Il faut jouer dans l'ordre des Deny / Allow pour que ca joue. Je n'ai pas le temps de faire des essaies, mais de memoire, les Deny ont priorite sur les allows par defaut donc les protections ont priorite sur ton autorisation locale. Il faut donc donner priorite au Allow sur le Deny. Le problème c'est qu'il s'agit de deux mécanismes différents: deny/allow sur les adresses IP, et require pour l'authentification. Il n'existe pas à ma connaissance de mécanisme qui permette de lier les deux. D'où ma méthode :-) Ceci dit, vu comme il est facilement possible de sauvegarder l'auth dans les browsers, et comme l'auth vit aussi longtemps que la session, ça ne me paraît pas indispensable tout ça :-) Jacques.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant