Come limitare l'accesso ai file caricati?
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.

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
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
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:

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.

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.

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

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

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!

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]

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.
