So schützen Sie Uploads, wenn der Benutzer nicht angemeldet ist?
-
-
Gibteseinen Grund,warum Sie kein anderes Upload-Verzeichnis verwenden können,z. B.eines außerhalb des Site-Stamms?Any reason why you can't use a different upload directory, like one outside of the site root?
- 1
- 2011-12-22
- onetrickpony
-
Nicht wirklich,aberich habebereits Tonnen von Dateien an Beiträgein diesem Verzeichnis angehängt. Esmachtmirnichts aus,mich überall zubewegen,wennicheine richtige Lösungfinden kannNot 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
-
Wenn Sie Benutzer automatisch zum Anmeldebildschirm umleiten,können Sie Uploadseinfach schützen,indem Sienach Verweisen suchen.Wenn der Referrer leerist (direkter Zugriff) oder sich von der Domäne unterscheidet,in der Sie die Dateien hosten,blockieren Sieihn.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 Antworten
- Stimmen
-
- 2012-01-02
Nur zu überprüfen,ob das Cookie vorhandenist,ist kein strenger Schutz.
Umeinen stärkeren Schutz zuerhalten,können Sie alle Anforderungen überein PHP-Skript an den hochgeladenen Ordner übergeben oder "proxy" (beispielhafte
uploads
im folgenden Beispiel):RewriteCond %{REQUEST_FILENAME} -s RewriteRule ^wp-content/uploads/(.*)$ dl-file.php?file=$1 [QSA,L]
Alle Anfragen an hochgeladene Dateien (einschließlich Bilderin Posts) werden an
dl-file.php
gesendet. Dort kann überprüft werden,ob der Benutzer angemeldetist odernicht.Wenn der Benutzernicht angemeldetist,wird das Anmeldeformular Ihrer Site angezeigt. Nachdem sich der Benutzer angemeldet hat,wirder zurück zur Dateigeleitet und kann diesejetzt herunterladen.
Ähnlichesfinden Siein
\wp-includes\ms-files.php
in Ihrer WordPress-Installation,aber diesesistfür Multisite und ohne Anmeldeprüfung und Weiterleitungen.Abhängig davon,wie viel Verkehr Sie haben,kannes sinnvoll sein,diesenbesserin Ihren Server zuintegrieren,z.
X-Accel-Redirect
oderX-Sendfile
-Header.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.-
Diesist dieeinzige wirklich sichere Lösung.Alles andere,was Sieim Webfinden können,wie das Überprüfen des Referer-Headers,das Überprüfen von Cookies und das Verbieten der Verzeichnisliste,isteine halbe Sache,da Sie HTTP-Anforderungsheader leichtfälschen können,um das Problem zu umgehen.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
-
Leute ... das schien dieperfekte Lösungfürmich zu sein ... Problemist,ich verwende PDFJS von Mozilla,um aufeinige PDFs aus dem Upload-Ordner zuzugreifen,und PDFJS verwendet Teilinhalts-Header,umnur die Seiten zuerhalten,an denenesinteressiertist..soist diese Lösungfürmichein No-Goer. irgendwelche Vorschläge??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: Teilweise Inhaltsanfragen an PHP wurdenbis heutegelöst,diesist unabhängig von dieser WordPress-Frage.Tatsächlichist die Frage schon ziemlich alt: [Wiederaufnahme der Downloadsbei Verwendung von PHP zum Senden der Datei?] (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 Wasistmit einigen der Bilder,die auf der Startseite der Website verwendet werden,undeinem Benutzer,der die Websitebesucht? Esgibt mir 404 Fehler,wennichnicht angemeldetbin.@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
-
Könntejemandbitte diese Codezeileerklären `list ($basedir)=array_values (array_intersect_key (wp_upload_dir (),array ('basedir'=> 1))) + array (NULL);` und wiees sich von `$basedir=unterscheidetwp_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: Deinesist höchstwahrscheinlich weniger kompliziert.Ein Grundfür das Originalist höchstwahrscheinlich die Kompatibilität der PHP-Abwärtsversion.@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
-
Großartig.Kannjemandbitte diese Lösung zueinem WordPress-Pluginmachen?Great. Can anyone please make this solution a wordpress plugin?
- 0
- 2020-05-17
- Jian Chen
-
- 2017-04-13
Wenn Sieeinen Plugin-basierten Ansatz zur Lösung dieses Problems wünschen,finden Sie hiereine einigermaßengute Lösung,dieich (endlich)gefunden habe:
- Installieren Sie das Plugin 'Download Monitor',verfügbar unter:
https://wordpress.org/plugins/download-monitor/ - Gehen Sieim WordPress-Dashboard zumneuen Menüpunkt "Downloads" undfügen Sieeinen neuen "Download" hinzu,wiein der Plugin-Dokumentationbeschrieben
Website hier: https://www.download-monitor.com/kb/adding- Downloads/.
Beachten Sie denfür Siebereitgestellten 'Download'-Shortcode (z. B. Speichern unter
Notizblock). Beachten Sie,dass die Dateiin
/wp-content/uploads/dlm_uploads/
gespeichert wird
- Geben Siein der Metabox 'Download-Optionen' 'Nur Mitglieder' an (wie hier dokumentiert https://www.download-monitor.com/kb/download-options/) und klicken Sie auf "Veröffentlichen".
- Fügen Sie auf der Seite,auf dernur die Mitglieder herunterladen sollen,den Shortcode hinzu,den Siein Schritt 2notiert haben,und veröffentlichen Sie die Seite,wie hier dokumentiert: https://www.download-monitor.com/kb/shortcode-download/. Sie können die Download-Link-Vorlage wie hierbeschrieben ändern https://www.download-monitor .com/kb/content-templates/ odererstellen Sie Ihreeigenen (z. B. um die Download-Anzahl zuentfernen)
- Wenn Sie zu Ihrer Seitenavigieren,sollteein Download-Link angezeigt werden (derjedochnicht die URL zur Download-Dateienthält). Wenn Siein einemneuen Browserfenster (oder Incognito-Fenster) zurgleichen Seitenavigieren,sollten Siefeststellen,dass der Downloadnichtmehrfunktioniert.
Diesbedeutet,dass Personen,dienicht angemeldet sind,die Datei weder herunterladennoch dietatsächliche URL der Datei anzeigen können. Wennjemand,dernicht autorisiertist,die URL zur Datei herausfindet,stoppt das Plugin auch das Surfen der Benutzer zur realen Datei-URL,indem der Zugriff auf den Ordner
/wp-content/uploads/dlm_uploads/
blockiert wird.Bonus: Wenn Sie diesfüreine Sitetun,auf der Benutzer sichnur als "Mitglieder" anmelden können (aber keine WordPress-Berechtigungen wie Seitenbearbeitung oder Admin haben),installieren Sie das Plugin "Mitglieder" https://wordpress.org/plugins/members/,erstellen Sieeine neue Benutzerrollemit dem Namen "Mitglied". Geben Sieihm dieeinmalige Funktion "Lesen",erstellen Sieeinen neuen Benutzerin WordPress undgeben Sieihm die Rolle "Mitglied".
Wenn Sie den Inhalt von Seiten schützenmöchten,bietet das Plugin "Mitglieder"einige Optionen,oderesgibt andere Plugins. Wenn Sie die Anmeldeseite sogestaltenmöchten,dass Mitgliederbesser aussehen als das Standard-Anmeldeformular von WordPress,verwenden Siebeispielsweise "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/
-
Der obenbeschriebene Prozess wird auch hiererläutert,obwohler,wie Sie sehen,nichtnurfür PDFs spezifisch seinmuss: http://www.thedigitalcrowd.com/website-development/wordpress/wordpress-restrict-access-zu-pdf-Downloads-mit-privaten-Mitgliedern-Anmeldedaten/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
Ich verwende WordPressfüreine private Site,auf der Benutzer Dateien hochladen. Ich verwende "Private WordPress",um den Zugriff auf die Site zu verhindern,wenn der Benutzernicht angemeldetist.
Ichmöchte dasselbemit denim Upload-Ordner hochgeladenen Dateientun.
Wennein Benutzernicht angemeldetist,kannernicht auf Folgendes zugreifen: https://xxxxxxx.com/wp-content/uploads/2011/12/xxxxxxx.pdf Wenn sie versuchen zuzugreifen,abernichtprotokolliert sind,sollten siebeispielsweise zur Anmeldeseite umgeleitet werden.
Ich habeein Pluginnamens Private Filesgefunden,aber das letzte Mal wurdees 2009 aktualisiert undes scheint aufmeinem WordPressnicht zufunktionieren.
Kenntjemandeine Methode? Eine Hotlinking-Methode reicht aus,um dies zu schützen?
Ich habe auch diese Methodegefunden:
Aber dann könntejeder Benutzer,der das Cookie repliziert,dieses Recht weitergeben? Grüße