Come limitare l'accesso ai file caricati?

4 apr 2011, 13:30:20
Visualizzazioni: 27.7K
Voti: 12

Ho un'area riservata su un sito web che può essere accessibile solo dagli utenti che hanno effettuato l'accesso. Per questo ho creato un template di pagina con una condizione 'current_user_can()'.

Il mio problema è che i documenti allegati alle pagine riservate sono ancora accessibili a chiunque inserisca il percorso completo nella barra degli indirizzi del browser.

C'è un modo per limitare l'accesso ai file caricati?

MODIFICA: Voglio chiarire che i file dovrebbero essere accessibili solo agli utenti che hanno effettuato l'accesso.

0
Tutte le risposte alla domanda 5
8

Questa non è propriamente una domanda su WordPress - ma puoi aggiungere una regola di riscrittura per impedire l'accesso a meno che il referrer non sia il tuo dominio.

[Aggiornamento]

Dovrai fare 2 cose

  1. Aggiungere una regola di riscrittura (direttamente con .htaccess o utilizzando WP_rewrite (riferimento Codex). L'obiettivo qui è negare le richieste ai tuoi documenti che non hanno il tuo dominio come referrer - questo impedisce alle persone di incollare il link nella barra degli indirizzi del browser

  2. Racchiudere i tuoi link di download in un blocco condizionale is_user_logged_in (riferimento Codex) - in questo modo appariranno nella pagina solo se l'utente ha effettuato l'accesso

Un esempio di codice è disponibile in una domanda correlata:

4 apr 2011 14:06:02
Commenti

Ciao anu, il referrer deve essere il mio dominio + il visitatore deve essere un utente registrato e connesso. Credo sia una questione relativa a WordPress.

mike23 mike23
4 apr 2011 15:16:03

Sembra più una questione di htaccess secondo me.

curtismchale curtismchale
4 apr 2011 17:49:26

Aggiornerò la mia risposta

anu anu
4 apr 2011 19:41:05

Ciao anu, sì, questo non mostra i file se un utente non è loggato, ma cosa succede se un utente indovina il nome del file? Può comunque accedervi! E questo è ciò che voglio evitare. Facciamo un esempio, supponiamo di avere un sito aziendale con alcuni documenti pubblici (report2011.pdf, report2010.pdf, ecc.) e alcuni documenti privati (report2009.pdf, report2008.pdf). Anche se i documenti privati non sono mostrati sul sito pubblico, qualcuno potrebbe facilmente indovinare alcuni nomi di file (basandosi sulla struttura di quelli pubblici) e quindi accedere ai documenti privati semplicemente digitando l'URL nella barra degli indirizzi.

mike23 mike23
7 apr 2011 17:35:39

È proprio questo che la regola di rewrite impedisce

anu anu
7 apr 2011 19:39:47

Funzionerà se non ho un dominio vero e proprio... Cioè se accedo al mio blog tramite indirizzo IP?

user3047 user3047
9 giu 2011 20:25:39

Due parole: referer spoofing. La tua soluzione non è altro che 'sicurezza per oscuramento': l'attaccante non può accedere al file multimediale se conosce l'URL completo. Ora invece deve conoscere uno degli URL referer validi. Che cosa abbiamo guadagnato, oltre a una maggiore complessità amministrativa? IMHO nulla. Al momento di scrivere questo, ci sono "migliaia" di plugin per proteggere pagine e post, ma Wordpress manca ancora di una protezione utile per i media. Gli sviluppatori di Wordpress (e dei plugin) evitano questo, sapendo quali sarebbero le conseguenze

User User
11 mar 2012 12:09:42

È decisamente una domanda su Wordpress, anche se non c'è una risposta specifica per Wordpress. Siamo quasi nel 2019 ormai. :(

bogl bogl
13 dic 2018 11:55:05
Mostra i restanti 3 commenti
1

Cambierei la cartella di upload posizionandola al di fuori della cartella www. Poi potresti "inviare" il file utilizzando una pagina "proxy". La pagina proxy verifica se l'utente è loggato e poi invia il file utilizzando header()/readfile().

27 set 2011 02:03:28
Commenti

So che è vecchio, ma potresti creare una demo?

klewis klewis
28 mar 2024 17:16:58
1

Puoi utilizzare la protezione hot-linking utilizzando il tuo server web preferito.

Vedi questa risposta su StackOverflow:
https://stackoverflow.com/questions/1775582/apache-hotlink-protection-for-download-folder.

Questo utilizza il file .htaccess di apache2

In sostanza, stai negando il download, se l'utente non proviene da una pagina del tuo blog!

9 giu 2011 00:36:14
Commenti

Non ho esperienza con queste cose... hai qualche idea su cosa dovrei inserire nel mio file .htaccess?

user3047 user3047
9 giu 2011 01:05:31
0

Questo ha funzionato per me. Puoi impedire l'accesso alla cartella wp-content/upload (escludendo gli utenti loggati) creando un file .htaccess e aggiungendo la seguente regola di riscrittura:

# Disabilita la navigazione delle directory
Options -Indexes

# Reindirizza gli utenti non loggati alla pagina di login
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule \.(pdf|jpg)$ /wp-login.php [L,R=302]
21 set 2023 09:03:49
2

Il plugin per utenti registrati verifica semplicemente che un visitatore abbia effettuato l'accesso prima di visualizzare il contenuto della tua pagina. L'accesso ai tuoi file tramite browser è controllato dal server.

Dovresti provare il plugin WP AskApache Password Protect - http://wordpress.org/extend/plugins/askapache-password-protect/

Naturalmente questo funzionerà solo se il tuo blog WordPress è ospitato su un server Apache.

9 giu 2011 00:45:53
Commenti

Non sono sicuro di come utilizzare questo plugin. Hai qualche idea su quali opzioni dovrei scegliere?

user3047 user3047
9 giu 2011 01:04:53

Il plugin non è più disponibile. È stato chiuso a causa di un problema di sicurezza.

JakeParis JakeParis
16 lug 2024 23:52:31