Come proteggere i caricamenti se l'utente non è connesso?
-
-
C'è qualchemotivoper cuinonpuoi usare una directory di caricamento diversa,come quella al difuori della radice del sito?Any reason why you can't use a different upload directory, like one outside of the site root?
- 1
- 2011-12-22
- onetrickpony
-
Nonproprio,ma hogià un sacco difile allegati aipostin quella directory,nonmi dispiace spostarmi dappertutto se riesco atrovare una soluzione adeguataNot really but i already got tons of files attached to posts in that directory, i dont mind on moving all around if i can find a proper solution
- 0
- 2011-12-22
- chifliiiii
-
Nel casoin cui reindirizzi automaticamentegli utenti alla schermata di accesso,unmodo sempliceperproteggerei caricamenti è controllareil referrer.Seil referrer è vuoto (accesso diretto) o diverso dal dominio che ospitai file,loblocchi.In case you auto redirect users to login screen, one easy way to protect uploads is to check for referrer. If the referrer is empty (direct access) or different than the domain you host the files, then you block it.
- 0
- 2020-01-31
- Konstantinos
-
2 risposta
- voti
-
- 2012-01-02
Controllare solo seil cookieesiste,non è unaprotezionemolto rigida.
Per ottenere unaprotezionepiùforte,puoipassare o "proxy"tutte le richieste alla cartella caricata (esempi di
uploads
nell'esempio seguente)tramite uno scriptphp:RewriteCond %{REQUEST_FILENAME} -s RewriteRule ^wp-content/uploads/(.*)$ dl-file.php?file=$1 [QSA,L]
Tutte le richieste difile caricati (cheincludonoimmagininei post) andrebbero a
dl-file.php
che quindipuò verificare se l'utente è connesso omeno.Se l'utentenon è loggato,verràmostratoilmodulo di login deltuo sito. Dopo che l'utente haeffettuato l'accesso,verrà reindirizzato alfilee potrà scaricarlo subito.
dl-file.php
esemplare.Qualcosa di similepuòesseretrovatoin
\wp-includes\ms-files.php
nellatuainstallazione di wordpress,ma quello èpermultisitoe senzail controllo dell'accessoe reindirizzamenti.A seconda della quantità ditraffico che hai,potrebbeessere saggiointegrarlameglio coniltuo server,ades. Intestazioni
X-Accel-Redirect
oX-Sendfile
.Only checking if the cookie exists, is not much of a strict protection.
To get a stronger protection, you can pass or "proxy" all requests to the uploaded folder (exemplary
uploads
in the following example) through a php script:RewriteCond %{REQUEST_FILENAME} -s RewriteRule ^wp-content/uploads/(.*)$ dl-file.php?file=$1 [QSA,L]
All requests to uploaded files (which includes images in posts) would go to
dl-file.php
which then can do verify if the user is logged in or not.If the user is not logged in, your sites login-form will be shown. After the user logged in, she will get redirected back to the file and can download it now.
Something similar can be found in
\wp-includes\ms-files.php
in your wordpress installation, but that one is for multisite and w/o the login check and redirects.Depending on how much traffic you have, it could be wise to better integrate this with your server, e.g.
X-Accel-Redirect
orX-Sendfile
headers.-
Questa è l'unica soluzione veramente sicura.Qualsiasi altra cosa chepuoitrovare sul Web,come controllare l'intestazione del referer,controllarei cookie,non consentire l'elenco delle directory,è unamezzamisurapoichépuoifacilmentefalsificare leintestazioni delle richieste HTTPper aggirarlo.This is the only really secure solution. Anything else you can find on the web, like checking referer header, checking cookies, disallow directory listing, is a half measure since you can easily spoof HTTP requests headers to get around it.
- 0
- 2013-09-20
- Luke
-
Ragazzi ... questami è sembrata la soluzioneperfetta ...ilproblema è che sto usando PDFJS di Mozillaper accedere ad alcuni PDF dalla cartella di caricamentoe PDFJS utilizzaintestazioni di contenutoparzialeper ottenere solo lepagine a cui èinteressato ...quindi questa soluzionenon vabene perme. eventuali suggerimenti??Guys..this seemed like the perfect solution for me....problem is, I am using PDFJS from Mozilla to access some PDFs from upload folder, and PDFJS uses partial-content headers to get only the pages it is interested in...so this solution is a no goer for me. any suggestions??
- 0
- 2014-11-28
- Otto Nascarella
-
@OttoNascarella: Le richieste di contenutoparziale a PHP sono state risolte ad oggi,questo èindipendente da questa domanda di wordpress.Ineffetti,la domanda ègiàpiuttosto vecchia: [Download ripristinabili quando si utilizza PHPperinviareilfile?] (Http://stackoverflow.com/q/157318/367456)@OttoNascarella: Partial Content requests to PHP have been solved as of today, this is independent to this wordpress question. Infact, the question is pretty old already: [Resumable downloads when using PHP to send the file?](http://stackoverflow.com/q/157318/367456)
- 0
- 2014-12-05
- hakre
-
@hakre E che dire di alcune di quelleimmagini usate sullaprimapagina del sito webe di qualsiasi utente che viene a visitareil sito? Mi dà unerrore 404 senon hoeffettuato l'accesso.@hakre What about some of those image used on front page of website and any user come to visit site? It gives me 404 error if I am not loggedin.
- 0
- 2018-05-01
- Dhaval Panchal
-
Qualcunopotrebbe spiegare questa riga di codice `list ($basedir)=array_values (array_intersect_key (wp_upload_dir (),array ('basedir'=> 1))) + array (NULL);`e come è diverso da `$basedir=wp_upload_dir () ['basedir'] `Could someone please explain this line of code `list($basedir) = array_values(array_intersect_key(wp_upload_dir(), array('basedir' => 1)))+array(NULL);` and how it's different from `$basedir = wp_upload_dir()['basedir']`
- 0
- 2020-04-02
- Tomas Eklund
-
@TomasEklund:iltuo èmoltoprobabilmentemeno complicato.Unmotivoper l'originale èmoltoprobabilmente la compatibilità con le versioniprecedenti di PHP.@TomasEklund: Your's most likely is less complicated. A reason for the original one is most likely PHP backwards version compatibility.
- 0
- 2020-04-04
- hakre
-
Grande.Qualcunopuò rendere questa soluzione unpluginper wordpress?Great. Can anyone please make this solution a wordpress plugin?
- 0
- 2020-05-17
- Jian Chen
-
- 2017-04-13
Se desideri un approcciobasato supluginper risolvere questoproblema,ecco una soluzione ragionevolmentebuona che ho (finalmente)trovato:
- Installailplug-in "Download Monitor",disponibile su:
https://wordpress.org/plugins/download-monitor/ - Nella dashboard di WordPress,vai allanuova voce dimenu "Download"e aggiungi unnuovo "Download",come descrittonella documentazione delplug-in
sito web qui: https://www.download-monitor.com/kb/adding- download/.
Prendinota dello shortcode "Download"fornitoperte (es. Salvain
Blocnotes). Tienipresente cheilfile viene salvatoin
/wp-content/uploads/dlm_uploads/
- Nellametabox "Opzioni di download",specifica "Solomembri" (come documentato qui https://www.download-monitor.com/kb/download-options/)e fai clic su "Pubblica".
- Nellapaginain cui desideri che venga visualizzato soloil download deimembri,aggiungi lo shortcode di cui haipresonota alpassaggio 2e "Pubblica/Aggiorna" lapagina,come documentato qui: https://www.download-monitor.com/kb/shortcode-download/. Puoimodificareilmodello del linkperil download come descritto qui https://www.download-monitor .com/kb/content-templates/ o creane unotuo (ades.per rimuovereil "conteggio" dei download)
- Vai allatuapagina,dovresti vedere un linkperil download (ma chenon rivela l'URL delfile di download). Senavighinella stessapaginain unanuovafinestra delbrowser (ofinestra dinavigazionein incognito),dovresti scoprire cheil downloadnonfunzionapiù.
Ciò significa che chiunquenon abbiaeffettuato l'accessononpuòné scaricareilfilené vedere l'URL reale delfile. Senel casoin cui qualcunonon autorizzato scopra l'URL delfile,ilplugininterrompe anche lanavigazione degli utenti verso l'URL delfile realebloccando l'accesso alla cartella
/wp-content/uploads/dlm_uploads/
.Bonus: se lofaiper un sitoin cui ènecessario chegli utentipossano accedere solo come "Membri" (manon hannoi permessi di WordPress come lamodifica dellapagina oessere un amministratore),installailplug-in "Membri" https://wordpress.org/plugins/members/,crea unnuovo ruolo utente chiamato "Membro",e dargli la capacità unica di "leggere",creare unnuovo utentein WordPresse assicurarti di dargli un ruolo di "membro".
Se desideriproteggereil contenuto dellepagine,ilplug-in "Membri"fornisce alcune opzioni oppure sono disponibili altriplug-in. Se desideri che lapagina di accessoperi membri abbia un aspettomigliore rispetto almodulo di accessopredefinito di WordPress,usa qualcosa come "Theme My Login": https://wordpress.org/plugins/theme-my-login/
If you would like a plugin-based approach to solving this problem, here is a reasonably good solution that I have (finally) found:
- Install the plugin 'Download Monitor', available at:
https://wordpress.org/plugins/download-monitor/ - In the WordPress Dashboard, go to the new 'Downloads' menu item and add a new 'Download', as described on the plugin documentation
website here: https://www.download-monitor.com/kb/adding-downloads/.
Take note of the 'Download' shortcode provided for you (eg. save to
Notepad). Note that the file gets saved in
/wp-content/uploads/dlm_uploads/
- In the 'Download options' metabox, specify 'Members only' (as documented here https://www.download-monitor.com/kb/download-options/), and click 'Publish'.
- On the page that you want the Members only download to appear, add in the shortcode you took note of in step #2, and 'Publish/Update' the page, as documented here: https://www.download-monitor.com/kb/shortcode-download/. You can change the download link template as described here https://www.download-monitor.com/kb/content-templates/, or create your own (eg. to remove the Download 'count')
- Browse to your page, you should see a download link (but which does not reveal the URL to the download file). If you browse to the same page in a new browser window (or Incognito window), you should find that the download no longer works.
This means that anyone not logged in cannot either download the file or see the real URL to the file. If in the event that someone unauthorised figures out the URL to the file, the plugin also stops users browsing to the real file URL by blocking access to the
/wp-content/uploads/dlm_uploads/
folder.Bonus: if you a doing this for a site where you need users to be able to login as 'Members' only (but have no WordPress permissions like page editing or being an Admin), install the 'Members' plugin https://wordpress.org/plugins/members/, create a new user role called 'Member', and give it the single capability of 'read', create a new User in WordPress, and make sure to give them a role of 'Member'.
If you want protect the content of pages, the 'Members' plugin provides some options, or there are other plugins out there. If you want to theme the login page for Members to look better than the WordPress default login form, use something like 'Theme My Login': https://wordpress.org/plugins/theme-my-login/
-
Ilprocesso che ho descritto sopra è anche spiegato qui,anche se comepuoi vederenon deveessere specifico soloperi PDF: http://www.thedigitalcrowd.com/website-development/wordpress/wordpress-restrict-access-in-pdf-download-con-dati-login-membri-privati/The process I have described above is also explained here, although as you can see it doesn't have to be specific to just PDFs: http://www.thedigitalcrowd.com/website-development/wordpress/wordpress-restrict-access-to-pdf-downloads-with-private-members-login-details/
- 0
- 2017-04-13
- Matty J
Uso WordPressper un sitoprivatoin cuigli utenti caricanofile. Utilizzoil "Private WordPress"perimpedire l'accesso al sito se l'utentenon è loggato.
Vorreifare lo stesso coni file caricatinella cartella dei caricamenti.
Quindi,se un utentenon è connesso,non saràin grado di accedere a: https://xxxxxxx.com/wp-content/uploads/2011/12/xxxxxxx.pdf setentano di accederemanon sono registrati,dovrebberoessere reindirizzati allapagina di accesso,adesempio.
Hotrovato unplug-in chiamatofileprivati ma l'ultima volta che è stato aggiornato è statonel 2009e non sembrafunzionare sulmio WordPress.
Qualcuno conosce unmetodo? Ilmetodo di collegamento a caldo sarà sufficienteperproteggerlo?
Ho anchetrovato questometodo:
Ma allora qualsiasi utente che replicail cookiepotrebbepassare questo,giusto? Saluti