comment limiter le système de téléchargement de fichiers via le navigateur que par mon application Web

StackOverflow https://stackoverflow.com/questions/1979268

Question

J'ai besoin de la meilleure façon d'empêcher tout accès aux fichiers doc quand il est pas mon application web, par exemple, j'ai besoin des fichiers à l'abri des moteurs de recherche ou les utilisateurs publics et seuls les utilisateurs privés peuvent atteindre et de les télécharger.

Je voudrais enregistrer les fichiers dans le système de fichiers et non dans la base de données afin de ne pas augmenter l'utilisation DB.

Était-ce utile?

La solution

Vous pouvez stocker vos fichiers dans le système de fichiers, dans un répertoire qui ne peut pas être accessible par une URL (comme un frère de votre répertoire Web racine). Cela permettra d'éviter un accès direct.

Ensuite, écrire un script PHP qui, lorsqu'il est interrogé pour un fichier donné, va vérifier si l'utilisateur peut accéder à ce fichier, et l'envoyer avec readfile (avec header pour le type de contenu et de disposition de contenu).

Autres conseils

Quand vous dites « les utilisateurs privés » que je suppose que signifie que ces utilisateurs sont authentifiés en quelque sorte. Vous pouvez stocker ces fichiers en dehors du répertoire web et les servir ensuite via PHP / Perl / Your_Favorite_Programming_language.

Un lien pourrait conduire à un script qui vérifie si l'utilisateur est authentifié, le cas échéant, servir le fichier via le script.

En php, après authentification de l'utilisateur, vous pouvez utiliser:

header('Content-disposition: attachment; filename=movie.mpg');
header('Content-type: video/mpeg');
readfile('/full/path/to/your/files/movie.mpg');

Rappelez-vous de faire ce répertoire en dehors de votre Webroot, et définir les autorisations au même utilisateur que vos scripts fonctionnent comme (nobody, généralement sous apache).

Robots.txt est un moyen de bloquer / autoriser certains utilisateur HTTP agents. Ce n'est pas la façon la plus sûre cependant. Vous pouvez utiliser l'authentification de base pour permettre à votre connexion d'applications Web.

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