2010-02-24 9 views
1

J'ai un répertoire de fichiers auxquels les utilisateurs connectés peuvent télécharger et accéder. Certains fichiers sont publics et d'autres sont privés, pour un accès interne uniquement. Les noms de fichiers et les paramètres d'accès sont enregistrés dans une base de données.Authentification/Refus d'accès aux fichiers dans le répertoire avec php

Quelqu'un peut-il me donner des ressources ou me montrer un exemple de la façon dont je peux utiliser les données de session (et .htaccess?) Pour permettre l'accès des fichiers privés uniquement aux utilisateurs autorisés? Je pense qu'il pourrait être plus facile de garder les documents publics dans un répertoire séparé, non protégé, même si je voudrais garder tout ensemble.

Je ne suis pas préoccupé par la sécurité de haut niveau ou de chiffrement, car les fichiers ne sont pas très sensibles, mais je veux les empêcher d'être indexé sur les moteurs de recherche, etc.

merci!

Répondre

1

Je suppose que je ne voudrais pas utiliser un .htaccess (ou tout autre type d'authentification HTTP) pour que: .htaccess/.htpasswd sont grands quand vous voulez autoriser/refuser l'accès à un répertoire entier, et non à des fichiers spécifiques.


Au lieu de cela, je:

  • Refuser tout accès aux fichiers - à savoir utiliser un fichier .htaccess, contenant Deny from All
    • De cette façon, personne ne dispose d'un accès au fichier
    • Ce qui signifie que tout le monde devra utiliser un autre moyen pour accéder aux fichiers, qu'une URL directe.
  • Développer un script PHP qui:
    • recevoir un identifiant de fichier (un nom de fichier, par exemple, ou un identifiant qui peut correspondre au fichier)
    • authentifier les utilisateurs (avec des champs de connexion/mot de passe), contre les données stockées dans la base de données
    • si l'utilisateur est valide et a accès au fichier (si différents utilisateurs n'ont pas accès au même ensemble de fichiers), lisez le contenu du fichier depuis votre script PHP et envoyez-le l'utilisateur.

L'avantage est que votre script PHP a accès à la base de données - ce qui signifie qu'il peut permettre aux utilisateurs de se connecter en, log-out, il peut utiliser des sessions, ...


A propos de la "envoyer le fichier à partir de PHP", voici quelques questions qui pourraient apporter un peu de lumière:

+0

Merci! J'envisageais une approche comme celle-ci, mais j'avais l'impression que "Deny from All" empêcherait aussi php de pouvoir interagir avec les fichiers. – neil

+0

Non: 'Deny from all' a un impact sur Apache; mais aucun sur PHP * (tant que votre script PHP ne se trouve pas dans le répertoire qui contient ce 'Deny from all', bien sûr, puisque votre script PHP est servi par Apache) * –

0

I 'd créer un script d'index personnalisé en PHP - quelque chose qui montrerait les fichiers dynamiquement. Utilisez cela pour ne conserver que les bons fichiers - ensuite, pour protéger davantage les fichiers, récupérer dynamiquement le contenu des fichiers - Les liens de Pascal MARTIN vous montrent comment utiliser PHP pour contrôler le streaming de fichiers, vous pouvez l'utiliser pour bloquer l'accès caché fichiers aux utilisateurs qui ne sont pas censés y accéder.

Questions connexes