Question

J'allais utiliser .htaccess mot de passe protéger un répertoire pour un script php j'écris, comme je ne fais pas confiance mes compétences en PHP pour créer une connexion sécurisée, mais j'ai découvert vous ne pouvez utiliser des chemins relatifs pour AuthUserFile et Je ne pouvais pas généraliser cela.

Si vous pouviez me diriger vers un script de connexion de PHP sécurisé par mot de passe protéger un répertoire que je serais très reconnaissant. Merci.

Était-ce utile?

La solution

Une chose que vous pouvez faire est de garder tous vos fichiers « secret » dans un répertoire en dehors de Webroot du serveur. Tous les accès à ces fichiers peuvent ensuite être acheminés par un seul script PHP dans votre répertoire. Quelque chose comme ceci:

http: //www.example. com / protégé répertoire / access.php? file = / foo / document.doc

Avec une structure de répertoire comme celui-ci:

+--+ /server_root
   |
   +--+ /web_root
   |  |
   |  +--+ /protected-directory
   |     +-- access.php
   |     +-- access-denied.html
   |
   +--+ /protected_root
      |
      +--+ /foo
         +-- document.doc

Dans votre access.php vous feriez quelque chose comme ceci:

$file = $_REQUEST['file'];
if ($user->hasAccessTo($file)) {
    readfile("/server_root/protected_root/$file");
} else {
    readfile('access-denied.html');
}

Maintenant, vous devez veiller à ce que vous assurez-vous que personne ne vis avec votre file paramètres et passe quelque chose le long comme "../../../etc/passwd". En outre, vous voudrez probablement vous assurer que vous envoyez les en-têtes corrects dans l'exemple ci-dessus, j'omis pour des raisons de clarté.

Autres conseils

Vous pouvez utiliser des chemins absolus à la AuthUserFile, et prendre des dispositions pour mettre ce fichier dans un endroit non accessible au serveur Web. Je l'ai fait pendant de nombreuses années. Fonctionne très bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top