Ausgangssituation
Für eine Site, die ich einrichte, habe ich mich mit dem gesamten Bereich der Sicherung von Uploads / Downloads und der Einschränkung des Zugriffs auf diese basierend auf Benutzerrollen / -funktionen befasst. Natürlich habe ich einige der vorherigen Fragen zum (allgemeinen) Thema hier gelesen, aus Referenzgründen die wichtigsten / interessantesten, die ich gefunden habe:
- So schützen Sie Uploads, wenn der Benutzer nicht angemeldet ist?
- Wie kann ich den Zugriff auf hochgeladene Dateien einschränken?
- Einschränken des Zugriffs auf Dateien in einem bestimmten Ordner
- Wie mache ich das Hochladen von Medien privat?
- PHP-Download-Skript in `functions.php` zusammenführen
Ergänzende Hinweise
Im Allgemeinen ist es keine schlechte Idee, die Sicherheit Ihrer WordPress-Installation zusätzlich zu verbessern - zum Beispiel Ihre zu schützen wp-config.php
- es gibt eine Menge Dinge, die Sie tun können und sollten. Es gibt eine Menge Informationen darüber, wie es geht. Ich bin im Zusammenhang mit dieser Frage hauptsächlich besorgt über meine Uploads / Downloads.
Wordpress-Uploads sind nicht gesichert. Jeder kann den uploads
Ordner durchsuchen , es sei denn, Sie verhindern dies mit .htaccess
:
Options All -Indexes
Die .htaccess
Datei muss im uploads
Ordner abgelegt werden . Aber das sichert sie nicht wirklich, es macht es nur schwieriger, die Dateien zu finden. Außerdem können Sie verhindern hotlinking
, dass der Zugriff auf der Grundlage von eingeschränkt wird referrer
- obwohl dies ein etwas anderer Fall ist, dachte ich, ich erwähne es, ich werde nicht weiter darauf eingehen, Sie können viele Informationen darüber finden.
Natürlich besteht die Möglichkeit, Beiträge privat zu machen oder einen benutzerdefinierten Beitragstyp mit geeigneten Vorlagendateien zu erstellen, um diesen Beitragstyp privat zu machen, aber das sichert Ihre Dateien nicht. Gleiches gilt für das Umschließen der Dateien in Bedingungen wie is_user_logged_in()
oder is_admin()
.
Nebenbei bemerkt gibt es viele Plugins, die versprechen, Ihre Dateien sicher und geschützt zu machen, aber viele von ihnen geben nur vor, dies zu tun. Einige der Gründe sind oben aufgeführt. Ich schreibe das nur aus, weil ich mir ziemlich sicher bin, dass es nicht jedem bekannt ist - also sei dir dessen bewusst.
Zielsetzung
Meine Absicht war es, den Zugriff auf (einige) Uploads bzw. Downloads einschränken zu können. Und um sicherzustellen, dass niemand unerwünscht auf sie zugreifen kann, nicht zufällig oder wenn jemand den Dateinamen kennt, sollten die Dateien wirklich privat und sicher sein. Schließlich sollten nur bestimmte Personen ausnahmslos Zugang haben.
Außerdem musste ich die gesamte Website nicht privatisieren, was kontraproduktiv wäre - sie wird für öffentliche Präsentationszwecke verwendet. Außerdem wollte ich, dass die Lösung leicht zu verwenden ist, aus dem einfachen Grund, dass einige der Leute, die damit arbeiten, nicht gerade Computerexperten sind, wie es oft der Fall ist.
Frage
Daher die Frage, gibt es eine (relativ) einfache Möglichkeit, den Zugriff auf (einige) Uploads und die jeweiligen Downloads zu beschränken? Und wie ich es getan habe, bedeutet das einen Weg, sie wirklich zu schützen und zu sichern?
Antworten:
Ich beantworte hiermit meine eigene Frage, weil ich eine Lösung gefunden habe, aber ich bin wirklich interessiert an Ihrer Meinung dazu. Oder vielleicht haben Sie eine viel bessere Lösung, wenn ja, würde ich gerne hier darüber sprechen.
Forschungsergebnis
Meine Forschungsergebnisse waren:
1. Holen Sie sich die Dateien außerhalb des Dokumentstamms,
www
Ordner;2. den direkten Zugriff auf den Ordner mit den Dateien untersagen;
3. Lassen Sie ein Skript die Anforderungen an die Dateien verarbeiten.
Die Quellen für diese Punkte sind - zumindest größtenteils - in meiner Frage enthalten.
Lösung
files
wird erstellt innerhalbwp-content
des Prozesses;.htaccess
habe dem neuenfiles
Ordner Datei :.htaccess
:Options All -Indexes
Order Deny,Allow
Deny from all
download method
;output file
;allowed to download
;Abschließende Gedanken
Ich denke, die Lösung folgt ziemlich genau den Forschungsergebnissen. Abgesehen davon, dass die Dateien draußen platziert werden. Die Einschränkung des Zugriffs auf / das Schutz des Verzeichnisses und die Verarbeitung von Dateianforderungen durch ein Skript ist jedoch vollständig. Die Zugriffsbeschränkung wird von der behandelt
.htaccess
und das Skript ist in diesem Fall das Pluginwp-downloadmanger
.Ergänzende Hinweise
download method
zuoutput file
und natürlich ist es ein Muss, dass die
.htaccess
Datei vorhanden istwp-downloadmanger.php
Um zu überprüfen, ob das Plugin die Rolle des Skripts übernimmt, schauen Sie sich die Zeilen 207 bis 227 (Version 1.6.1) an. Dies ist als ergänzender Punkt zu den verknüpften Informationen gedachtquelle