BlueGEEK Journal

Accueil > Manip’s > FREE & HTACCESS > Accès protégé par un mot de passe

Free & Htaccess

Accès protégé par un mot de passe

require valid-user

mercredi 31 janvier 2007, par bluegyn_spip

Sans plus attendre voyons maintenant comment mettre un mot de passe pour accéder à un dossier sur FREE

Nous avions vu dans la leçon précédente

- Comment interdire l’accès à un dossier en y plaçant un seul fichier contenant une seule ligne d’instructions

- Nom de fichier :

.htaccess

Contenu :

deny from all

L’accès filtré est à peine plus complexe à mettre en oeuvre

- Voir ici


Il nous faut 3 fichiers placés dans 2 dossiers distincts

1. Dans le dossier à filtrer

-dit dossier courant (ici mesbebes) nous créons un 1er fichier nommé

.htaccess

Qui devra contenir ces 4 lignes :

PerlSetVar AuthFile file/mesbebes.pw

AuthName "Mes Bébés"

AuthType Basic

require valid-user

- Je vous conseille de copier-coller ces lignes car chaque lettre compte

  • Il faut bien écrire PerlSetVar AuthFile
  • et pas Perlsetvar authfile
  • ATTENTION
  • à la place des lettres majuscules et des minuscules
  • A mettre des Slashs UNIX / et non des antislashes Windows

2. Il faut créer un nouveau dossier sur le serveur

- Ici appelé file (mais le nom importe peu du moment qu’il ne comporte ni accents ni espaces)

- Et qui va contenir le fichier des mots de passe

3. Le fichier des mots de passe

- s’appelle ici mesbebes.pw (là encore peu importe son nom)

  • Mais il doit être strictement identique à celui spécifié dans la ligne AuthFile)

mesbebes.pw

placé dans le dossier

file

est appelé par la directive

PerlSetVar AuthFile file/mesbebes.pw

Si je veux un fichier

.htpassword

placé dans le dossier

perso

Je dois écrire

PerlSetVar AuthFile perso/.htpassword

- Le fichier des mots de passe, est un fichier texte qui aura toujours cette structure

identite :motdepasse

C’est à dire

  1. à gauche => le Nom de l’utilisateur
  1. suivi de => 2 points
  1. suivi de => son mot de passe en clair à droite
  1. Sans aucun espaces !!!

IL EST EXTREMEMENT IMPORTANT

- De créer ce fichier UNIQUEMENT AVEC LE BLOC NOTES

- N’utilisez jamais WORD

- Ni même le WordPad

- TOUJOURS LE BLOCNOTES (notepad)


- Par exemple nous décidons avec François de créer un fichier avec

  • notre nom comme utilisateur
  • et notre prénom comme mot de passe

fichier_des_mots_de_passe

- dupont:jean

- durand:jacques

- Si je veux pouvoir taper les noms sans tenir compte de la casse (MAJUSCULES) je dois faire 2 entrées de cette façon

dupont:jean

DUPONT:JEAN

durand:jacques

DURAND:JACQUES

- Nous pouvons désigner n’importe quel dossier existant et n’importe quel nom de fichier pour les mots de passe

- MAIS ATTENTION

  • Le fichier des mots de passe doit être protégé par une barrière infranchissable car FREE refuse les mots de passe chiffrés (si c’est une passoire ce n’est pas la peine d’avoir un mot de passe)

- Nous allons donc placer juste à côté du fichier mesbebes.pw -Notre tout premier fichier :

.htaccess

- créé dans la leçon précédente et qui contient la ligne deny from all

- ce qui interdit l’accès à toute tentative d’intrusion par le web

- Je vous donne comme exemple pratique la construction à faire pour installer un fichier des gardes entre 2 médecins

- En GRAS ROUGE LES DOSSIERS

- En Bleu les Fichiers

- En vert italique le contenu des fichiers

++++ DOSSIER

  • mesgardes /
    • .htaccess
      • PerlSetVar AuthFile file/mesgardes.pw
      • AuthName "Gestion des Gardes"
      • AuthType Basic
      • require valid-user
    • agenda.php
    • etc...

DOSSIER

  • file /
    • mesgardes.pw
      • dupont:jean
      • durand:jacques
    • .htaccess
      • deny from all

++++

ATTENTION

  • Le nom des fichiers s’écrit toujours en minuscules
  • On ne peut renommer htaccess en .htaccess que sur le serveur en lui rajoutant un point avant le h et en supprimant toute extension

EXERCICE

DOSSIER

  • mesgardes /
    • .htaccess
      • PerlSetVar AuthFile file/mesbebes.pw
      • AuthName "Mes Bébés"
      • AuthType Basic
      • require valid-user
    • agenda.php
    • etc...

DOSSIER

  • file /
    • mesgardes.pw
      • bb:bb
    • .htaccess
      • deny from all

Facile non ?


Fichiers Exemples


Exemple HTACCESS
Accès limité
Exemple Deny From ALL
Acces Interdit
Exemple Acces interdit pour un seul fichier
Directive
nomfichier

Messages

  • J’ai bien effectuer toutes les manipulations voulues.

    Mais quand je rentre le bon mot de passe et le bon identifiant, Rien ne se passe et il me le redemande.

    La htaccess se trouvant dans le dossier "file" n’empecherait pas le htaccess dans le dossier courant d’acceder aux mot de passe ?

    Cordialement

    Mini iEn

    • Il doit y avoir une erreur de manip

      - Car cela fonctionne parfaitement sur tous les sites free que je connais

      PREAMBULE

      - Sur le site créez un dossier nommé file (par exemple)

      - Sur le disque créez 3 fichiers

      - 1- htaccess.txt

      - 2- htaccess_file.txt

      - 3- motdepasse.txt

      - DANS motdepasse.txt écrivez

      admin:admin

      admin deux points admin

      - DANS htaccess_file.txt écrivez

      deny from all

      En minuscules

      AVEC LE FTP

      Placez ces 2 fichiers dans le nouveau dossier file

      - motdepasse.txt

      - htaccess_file.txt


      Maintenant tapez votre URL pour tenter d’ouvrir votre fichier des mots de passe

      http://monsite.free.fr/file/motdepasse.txt

      Horreur tout le monde peut lire vos mots de passe


      Maintenant

      - Prenez le fichier htaccess_file.txt et renommez le sur le site

      .htaccess

      - Point au début

      - En minuscules

      - Rien après htaccess

      Lancez l’URL

      http://monsite.free.fr/file/motdepasse.txt

      Vous devez obtenir ce message

      Forbidden, vous n’etes pas autorisé à visiter cette page !!!


      Est ce que ça fonctionne ?

      - Si ça ne fonctionne pas, il est inutile d’aller plus loin

      - Vous avez fait une erreur grossière de manip et il faut tout reprendre !

    • J’ai le même problème, et pourtant la méthode que vous annoncez dans votre réponse marche. La boîte de dialogue pour le mot de passe reste et n’accepte pas celui ci... j’ai beau recommencer le problème ne se résoud pas.

    • Prbolème résolut :

      Il n’y a pas d’espace entre le nom d’utilisateur et le mot de passe dans le fichier password.

      Et il faut aussi transferer le fichier mot de passe en mode ASCII sinon ça ne marche pas, il n’y a pas besoin de mot de passe. Voilà :)

    • Oui bien sûr cela me semblait évident, mais vous faites bien de le souligner

      - FREE est hébergé par un serveur UNIX dont la syntaxe et particulièrement sensible à la casse

      - Une majuscule n’est pas une minuscule

      - Et l’espace est considéré comme une rupture de ligne

      Ainsi dans l’exemple donné

      admin:admin

      J’ai bien précisé

      - admin deux point admin (en minuscules)

      (La mise en forme montre un faux espace entre admin et : mais il n’existe pas dans le source)

      Si l’on veut saisir la casse en majuscules OU en minuscules il faut écrire les 2 lignes

      - admin:admin

      - ADMIN:ADMIN

      Tous les fichiers htaccess et password doivent êtré écrit avec le BLOC-NOTES

      - Jamais avec Write, jamais avec WORD

      C’est pourquoi je les appelle htaccess.txt et password.txt (et non htaccess.doc )

      Il ne faut mas non plus inclure de retour de ligne (ou de ligne vide) après la dernière ligne


      Il faut prendre l’habitude d’écrire ses scripts dans un éditeur de lignes (comme le NotePad, le Notepad Plus Plus ou le PSPAD) qui ne rajoute pas de caractères invisibles incontrôlables, comme le format DOC ou RTF...

    • Je suppose donc que vous avez pu placer un fichier

      - .htaccess

      Contenant l’unique ligne

      - deny from all

      Dans votre dossier file (en minuscules)

      Et que désormais, il vous est impossible d’y accéder via le protocole HTTP (c’est à dire le navigateur)

      - En tapant :

      http://monsite.free.fr/file/


      Vous pouvez donc y placer votre fichier des mots de passe

      - Car il est maintenant verrouillé

      Mais cela n’était que la 1ère étape


      Il vous faut créer un second fichier

      htaccess.txt

      Contenant ces lignes

      PerlSetVar AuthFile file/motdepasse.txt

      AuthName "TEST"

      AuthType Basic

      require valid-user

      Et le placer (en mode ASCII donc) dans le dossier à protéger par mot de passe

      - Par exemple la racine de FREE

      Notez la syntaxe parfaite

      - PerlSetVar

      - N’est ni Perlsetvar, ni PERLSETVAR

      Et htaccess.txt

      Doit être renommé

      .htaccess

      Avec votre FTP sur le site FREE, car seul UNIX tolère l’écriture de fichier commençant par un point.

      Dans file/motdepasse.txt

      - Vous précisez le chemin des fichiers des mots de passe

      - Vous remarquez que sous UNIX c’est la Barre / qui désigne le chemin (slash) et non l’antislash \ (qui est un caractère de signification particulière)

      "TEST"

      - Désigne l’invite (prompt) qui apparait dans la boite du mot de passe

      Dans notre exemple vous tapez

      - Utilisateur = admin

      - Mot de Passe = admin

      - Si votre nom est TOTO

      - Et votre mot de passe est BONJOUR

      Votre fichier motdepasse.txt doit être ainsi construit

      - TOTO:BONJOUR

      Bine que ça ne soit pas évident, il n’y a aucun espace entre les mots et les 2 points.

      En fait on voit bien que ce n’est pas très compliqué...


      Alors ça marche chez vous ?

    • J’aurai une question supplémentaire, si bien sûr un didacticiel n’est pas prévu à cet effet pour plus tard, je voulais savoir comment l’on fait pour rediriger un visiteur qui se trompe de mot de passe vers une page personnalisée ? :)

    • Bonjour,

      Il est toujours possible de rediriger une page qui retourne une erreur

      - Comme l’erreur 404

      Lorsqu’on demande une page qui n’existe pas

      - En rajoutant la ligne :

      ErrorDocument 404 /erreur404.html

      à un fichier .htaccess placé lui aussi à la racine / du site

      - Et en placant une page d’erreur 404 personnalisée à côté

      /erreur404.html

      VOIR AUSSI ICI


      La réponse à un htaccess "deny from all"

      - Est une erreur de type 403

      Forbidden

      You don’t have permission to access /file on this server.

      On pourra donc rajouter en plus la ligne :

      ErrorDocument 403 /erreur403.html


      Malheureusement le "Mot de passe erroné"

      - Ne génère aucune erreur "détournable"

      La boite de saisie se ré-affiche éternellement jusqu’a saisie des bons renseignements

      - Un tel outil peut être "assez" facilement programmé en PHP

      - Et fera l’objet d’une prochaine leçon... (car PHP est un peu plus complexe à programmer qu’un simple HTACCESS-Apache.)


      Tout sur les fichiers HTACCESS ici :

    • Re-bonjour,

      Une réponse partielle à votre question,

      - Puisque l’appui sur la touche échappe pour refermer la Boite d’Accès par mot de passe génère une :

      ERREUR 401

      Il suffit donc dans ce cas de créer un fichier

      .htaccess

      à la racine de FREE

      Et d’y placer (ou d’y ajouter) cette ligne

      ErrorDocument 401 /error401.html

      ErrorDocument ("E" & "D" en majuscules sans espace entre Error et Document) puis espace 401 espace Barre / sans espace error401.html

      Le fichier error401.html

      - Contenant par exemple ces lignes

      error401.html

      Espace réservé aux membres à jour de leur cotisation !


    • Pour la gestion de l’accès en PHP

      - Un lien très intéressant ici


      Voir en ligne : PHP NET:Identification HTTP avec PHP

    • Bonjour,

      Le système fonctionne mais j’ai un gros problème. En effet j’utilise des frame. Le htaccess ne fonctionne pas. Je m’explique si je tape dans le barre d’adresse http://etienne.bretteville.free.fr/cv cela fonctionne. En revanche si j’accède à http://etienne.bretteville.free.fr/cv par le click sur l’étoile du menu, le htaccess n’est pas vu ! Une idée ?

      Merci encore

    • Votre site est ici

      - http://etienne.bretteville.free.fr

      Cette page est protégée

      - http://etienne.bretteville.free.fr/cv

      Un clic sur le Menu CV appelle cette page

      - http://etienne.bretteville.free.fr/{{cv.htm

      Qui est située dans le DOSSIER

      - http://etienne.bretteville.free.fr/

      - Qui n’est pas protégé

      Ce n’est donc pas une question de frame c’est une question d’adresse

      - D’ailleurs vous voyez que si vous appelez CV AU FORMAT HTML

      http://etienne.bretteville.free.fr/cv/CV2005.htm

      - L’accès est protégé car le fichier pointé est dans un dossier protégé


      La solution la plus simple est de placer cv.htm dans le dossier /cv/ et de corriger le lien du frame

    • Bonjour je test cela de suite et j’edite le post pr tenir au courant.

      Merci de votre aide.

    • merci bluegyn pour ce tutorial . j’ai pas encore reussi à le faire fonctionner sur ma page free mais je ne desespere pas . le lien pour l’dentification html en php ne marche plus mais je crois l’avoir retrouvé là

      http://www.asp-php.net/tutorial/asp-php/dmx_session.php?page=1

    • - Cette page traite de l’identification par mot de passe sur un serveur FREE

      • (directives contenues dans un fichier htaccess)

      - Pour l’identification par Script PHP

      • Merci pour votre lien
      • Il faut plutôt aller voir du côté des leçons en PHP

      http://bluegyn.com/spip/article.php3?id_article=185

    • j’ai enfin compris d’ou venait mon pb . le transfert sur le ftp doit se faire en mode acscii ce qui n’est pas automatique dans les options du logiciel de ftp (transmit pour mac en ce qui me concerne )

    • Bonsoir,

      J’ai testé et ça fonctionne pour des dossiers. J’ai toujours des problèmes avec la frame. Peut-être un problème connu ?

      Merci en tous cas pour le support.

      P.S : Sous firefox après une saisie l’authentification n’est plus demandé...?! Rien dans le gestionnaire de mot de passe.

    • Oui, la connexion est dite permanente pour une autorisation

      Elle n’est valable que pour un utilisateur donné et pour un certain temps ...

    • En fait l’authentification ouvre une session sécurisée qui reste valable pour un utilisateur,

      Tant que son Navigateur est ouvert

      Pour réinitialiser la session

      - Il suffit de fermer le navigateur

      Pour relancer l’authentification

      - Il suffit de relancer le navigateur


    • Merci pour les infos,

      Est-ce que vous connaitriez des scripts open source pour réaliser un accés paramétré et plus sécurisé ?

      Merci encore.

    • Bonjour,

      - Je suis en train de réaliser un Projet d’Agenda Sécurisé

      - Et tous les scripts du travail sont disponibles à qui le veut

      - A voir et à commenter à cette rublique :

      http://bluegyn.com/spip/rubrique.ph...

    • Bonsoir,

      J’ai regardé ça et tout d’abord Bravo pour l’initiative ! Votre accés sécurisé à ceque j’ai pu lire repose sur la fameuse .htaccess de l’html, je l’utilise actuellement, je suis en recherche d’"autre" chose.

      Quelquechose du genre :

      Une boîte avec Login et Mot de Passe qui fonctionnerais avec les frame ainsi qu’une sécurité "permanente".

      Que l’authentification ne soit pas valable tout le tmp de l’ouverture du navigateur.

      Encore merci.

      Voir en ligne : http://etienne.bretteville.free.fr

    • Il semble assez simple de créer une page avec un mot de passe,

      - Vient ensuite le problème de propager la sécurité d’une page à une autre

      - Et la, c’est vrai que le travail par session est idéal, puisque tout peut être enregistré dans des variables secrètes de type $_SESSION[], que chaque page ouverte au cours d’une même session peut interroger et authentifier.

      - Malheureusement la session reste active tant que le navigateur est ouvert

      - Il est cependant possible de forcer la fermeture d’une session par un ordre de déconnexion.

      - Dès que j’ai un peu de temps je ferais une leçon particulière sur ce problème d’authentification "à la carte"

      Bonne journée, merci de votre intérêt et de votre participation.

    • Bonsoir,

      Je regarde ça quand j’ai 5 min et je repost !

      Merci

  • bonjour,

    merci pour votre tuto mais j’ai un phénoméne curieux si dans .htaccess j’ai :

    PerlSetVar AuthFile ht/ht.tx

    AuthName "Acces Restreint"

    AuthType Basic

    require valid-user

    et que je lance la page qui est placé dans le même répertoire, rien ne se passe bien que le fichier ht.txt existe bien avec login:pass sans caractère supplémentaire. Pas de protection...

    Par contre si dans mon .htaccess j’ai :

    PerlSetVar

    AuthFile ht/ht.txt

    AuthName "Acces Restreint"

    AuthType Basicrequire valid-user

    (il y un saut de ligne après PerSetVar) j’ai une erreur 500...

    les ligne vides ne sont pas dans le fichier ’c’est juste pour la lisbilité..)

    De même j’ai vérifié, pas d’expaces ni de tab ni de saut de ligne en fin de ligne ou de fichier..

    Comment faire ?

    merci

    Gilles

    • Voila le fichier qui marche


      PerlSetVar AuthFile file/motdepasse.txt

      AuthName "TEST"

      AuthType Basic

      require valid-user


      - Ce fichier doit IMPERATIVEMENT ETRE EDITE AVEC LE NOTEPAD

      • Ou un équivalent comme PSPAD (Jamais avec WorpdPad, Jamais avec Word)

      - Ce fichier contient 4 lignes et 4 seulement (L1-L4),

      - ce qui veut dire en clair qu’il contient 3 sauts de ligne et 3 seulement (SL1-SL3)

      - L1- PerlSetVar AuthFile file/motdepasse.txt -SL1

      - L2- AuthName "TEST" -SL2

      - L3- AuthType Basic -SL3

      - L4- require valid-user

      - Ce fichier comporte 2 espaces dans la 1ere ligne

      - 1 espace dans les lignes suivantes

      - Chaque ligne est une instruction chaque espace sépare la fonction et son ou ses arguments

      - Toutes les instructions sont Casse dépendantes, il faut donc veillez a respecter les majuscules

      (Le Mieux est de copier coller les lignes)

      - Le dossier file doit exister sur le site

      - Le dossier motdepasse.txt doit exister dans le dossier file sur le site

      - Le dossier motdepasse.txt doit comporter au moins une ligne

      monnom:monmotdepasse

      - Sans espace et sans retour chariot à la fin

      (monnom et monmotdepasse sont bien sur des exemples)


      Quant à l’erreur 500 elle correspond à un Blocage du serveur sur un fichier .htaccess "non conforme"

      SOLUCE

      - Il ne faut pas mettre de saut de ligne pour la 1ere instruction qui doit donc tenir sur 1 seule ligne.