web-dev-qa-db-fra.com

solution simple pour restreindre l'accès à (certains) envois/téléchargements

Situation initiale

Pour un site que je suis en train de configurer, je me suis intéressé à la sécurisation des téléchargements et à la restriction de leur accès en fonction des rôles et des capacités des utilisateurs. Bien sûr, j'ai lu certaines des questions précédentes liées au sujet (général) ici, pour des raisons de référence les plus importantes/intéressantes que j'ai trouvées:

Notes complémentaires

En règle générale, il n’est pas mauvais d’améliorer en outre la sécurité de votre installation wordpress - par exemple en protégeant votre wp-config.php - vous pouvez et devez faire beaucoup de choses. Il y a une tonne d'informations sur la façon de le faire. Je suis dans le contexte de cette question principalement préoccupé par mes uploads/téléchargements.

Les envois Wordpress ne sont pas sécurisés, tout le monde peut parcourir le dossier uploads, sauf si vous l’empêchez avec un .htaccess:

Options All -Indexes

Le fichier .htaccess doit être placé dans le dossier uploads. Mais cela ne les sécurise pas vraiment, cela rend simplement plus difficile la recherche des fichiers. De plus, vous pouvez empêcher hotlinking, restreignant essentiellement l'accès sur la base de referrer - bien que ce soit un cas un peu différent, je pensais le mentionner, je ne vais pas en dire plus, vous pouvez trouver beaucoup d'informations à ce sujet.

Bien sûr, il est possible de rendre les publications privées ou de créer un type de publication personnalisé avec des fichiers de modèle appropriés pour rendre ce type de publication privé, mais cela ne sécurise pas vos fichiers. On peut en dire autant pour encapsuler les fichiers dans des conditions telles que is_user_logged_in() ou is_admin().

Dans certains cas, il existe de nombreux plug-ins qui promettent de sécuriser et de protéger vos fichiers, mais bon nombre d'entre eux prétendent le faire, certaines des raisons étant ci-dessus. Je ne fais que souligner cela parce que je suis à peu près sûr que tout le monde ne le sait pas - alors, soyez conscient de cela.

Objectif

Mon intention était de pouvoir restreindre l'accès à (certains) téléchargements et respectivement aux téléchargements. Et pour que personne ne puisse y avoir accès, pas par hasard, ou si cette personne connaissait le nom du fichier, les fichiers devaient être vraiment privés et sécurisés. Après tout, seules certaines personnes devraient y avoir accès sans exception.

De plus, je n'avais pas besoin de privatiser tout le site, ce qui serait contre-productif: il est utilisé à des fins de présentation publique. De plus, je souhaitais que la solution soit facilement utilisable, pour la simple raison que certaines des personnes qui l'utilisent ne sont pas exactement des experts en informatique, comme c'est souvent le cas.

Question

D'où la question, existe-t-il un moyen (relativement) simple de limiter l'accès à (certains) téléchargements et aux téléchargements respectifs? Et comme je l'ai fait, cela signifie un moyen de les protéger et de les sécuriser?

11
Nicolai

Je réponds par la présente à ma propre question, car j’ai trouvé une solution, mais je suis vraiment intéressé par vos opinions à cet égard. Ou peut-être avez-vous une bien meilleure solution? Si oui, j'aimerais vraiment en parler.

Résultat de recherche

Mes résultats de recherche étaient:
1. récupérez les fichiers en dehors de la racine du document, dossier www;
2. interdire tout accès direct au dossier contenant les fichiers;
3. laisser un script gérer les requêtes sur les fichiers;
Les sources de ces points sont, du moins pour la plupart, incluses dans ma question.

Solution

  1. J'ai installé le plugin " wp-downloadmanager "
    • un dossier appelé files sera créé dans wp-content dans le processus;
  2. J'ai ajouté un fichier .htaccess au nouveau dossier files:
    • contenu du .htaccess:
      Options All -Indexes
      Order Deny,Allow
      Deny from all
  3. J'ai changé une option importante du plugin:
    • l'option que je veux dire est download method;
    • Je l'ai changé en output file;
  4. J'ai ajouté des fichiers sur l'interface du plugin:
    • il existe une option appelée allowed to download;
    • qui permet de restreindre l'accès en fonction du rôle/de la capacité de l'utilisateur;
  5. J'ai fait des tests:
    • pas d'accès direct aux fichiers - pas sur la barre d'adresse ou wget;
    • les téléchargements publics sont accessibles via leurs permaliens - je choisis "Nice permaliens: oui" et "download url: file id" dans le panneau des options - addressbar/wget fonctionne également;
    • les téléchargements protégés et restreints ne sont accessibles que si vous êtes connecté en tant qu'utilisateur avec le rôle/les capacités appropriés;

Pensées finales

Je pense que la solution suit à peu près les résultats de la recherche. En dehors de placer les fichiers à l'extérieur. Mais restreindre l'accès à/protéger le répertoire et laisser un script gérer les demandes de fichier est rempli. La restriction d'accès est gérée par le .htaccess et le script dans ce cas est le plugin wp-downloadmanger.

Notes complémentaires

  • il est absolument nécessaire de changer le download method en output file
  • et bien sur c’est un must que le fichier .htaccess est en place

  • pour vérifier le fait que le plug-in assume le rôle du script, consultez wp-downloadmanger.php - à propos des lignes 207 à 227 (version 1.6.1); ceci est considéré comme un point complémentaire aux informations liées

8
Nicolai