J'utilise wordpress pour un site privé où les utilisateurs téléchargent des fichiers. J'utilise le "WordPress privé" pour empêcher l'accès au site si l'utilisateur n'est pas connecté.
Je voudrais faire la même chose pour les fichiers téléchargés dans le dossier uploads.
Donc, si un utilisateur n’est pas connecté, il ne pourra pas accéder à: https://xxxxxxx.com/wp-content/uploads/2011/12/xxxxxxx.pdf s’ils essaient d’y accéder mais qu’ils ne sont pas connectés, ils doivent le faire. être redirigé vers la page de connexion par exemple.
J'ai trouvé un plugin appelé fichiers privés, mais la dernière fois mis à jour était en 2009 et il ne semble pas fonctionner sur mon wordpress.
Quelqu'un connaît une méthode? La méthode Hotlinking suffira-t-elle à protéger cela?
J'ai aussi trouvé cette méthode:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^.*uploads/private/.*
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule . /index.php [R,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Mais alors tout utilisateur qui réplique le cookie peut-il passer ce droit? Cordialement
la source
Réponses:
Vérifier que le cookie existe n’est pas une protection stricte.
Pour obtenir une protection renforcée, vous pouvez transmettre ou "proxy" toutes les demandes au dossier téléchargé (à titre d'exemple
uploads
dans l'exemple suivant) via un script php:Toutes les demandes de fichiers téléchargés (y compris les images dans les messages) iraient à
dl-file.php
ce qui peut ensuite vérifier si l'utilisateur est connecté ou non.Si l'utilisateur n'est pas connecté, le formulaire de connexion de votre site sera affiché. Une fois l’utilisateur connecté, il sera redirigé vers le fichier et pourra le télécharger maintenant.
Exemplaire
dl-file.php
.Quelque chose de similaire peut être trouvé dans
\wp-includes\ms-files.php
votre installation wordpress, mais celle-ci est pour multisite et sans contrôle de connexion et redirections.En fonction de votre trafic, il pourrait être judicieux de mieux l'intégrer à votre serveur, par exemple, à des en
X-Accel-Redirect
-X-Sendfile
têtes.la source
Vous pouvez également écrire un plugin en utilisant le
init
hook et la get-value$_GET[ 'file' ];
. Si l'utilisateur a cette valeur d'obtention, sautez dans une fonction pour vérifier les droits d'accès aux fichiers: Par exemple, avec une case à cocher dans une Meta Box.la fonction get_file ()
Vous pouvez également ajouter une URL personnalisée pour les fichiers via le hook
generate_rewrite_rules
la source
Si vous souhaitez une approche basée sur un plugin pour résoudre ce problème, voici une solution relativement bonne que j'ai (enfin) trouvée:
https://wordpress.org/plugins/download-monitor/
/wp-content/uploads/dlm_uploads/
Cela signifie que les personnes non connectées ne peuvent ni télécharger le fichier, ni voir l'URL réelle du fichier. Si, au cas où une personne non autorisée déterminerait l'URL du fichier, le plug-in empêche également les utilisateurs d'accéder à l'URL du fichier réel en bloquant l'accès au
/wp-content/uploads/dlm_uploads/
dossier.Bonus: si vous faites cela pour un site où vous avez besoin que les utilisateurs puissent se connecter en tant que 'Membres' (sans aucune autorisation WordPress comme l'édition de page ou en tant qu'administrateur), installez le plugin 'Membres' https: // wordpress .org / plugins / members / , créez un nouveau rôle d'utilisateur appelé "Membre", attribuez-lui la seule capacité de "lecture", créez un nouvel utilisateur dans WordPress et assurez-vous de leur attribuer le rôle de "Membre".
Si vous souhaitez protéger le contenu des pages, le plug-in "Membres" fournit certaines options ou d'autres plug-ins. Si vous souhaitez personnaliser la page de connexion pour que les membres aient une meilleure apparence que le formulaire de connexion par défaut WordPress, utilisez quelque chose comme "Thème Mon login": https://wordpress.org/plugins/theme-my-login/
la source