it-swarm.com.de

einfache Lösung zur Einschränkung des Zugriffs auf (einige) Uploads/Downloads

Ausgangssituation

Für eine Site, die ich gerade erst aufbaue, habe ich mich mit dem gesamten Bereich des Sicherns von Uploads/Downloads und dem Einschränken des Zugriffs auf diese basierend auf Benutzerrollen fähigkeiten befasst. Natürlich habe ich einige der vorherigen Fragen zum (allgemeinen) Thema hier gelesen, aus Referenzgründen die wichtigsten/interessantesten, die ich gefunden habe:

Ergänzende Anmerkungen

Im Allgemeinen ist es keine schlechte Idee, die Sicherheit Ihrer WordPress-Installation zusätzlich zu verbessern - zum Beispiel Ihren wp-config.php zu schützen - es gibt eine Menge Dinge, die Sie tun können und sollten. Es gibt eine Menge Informationen, wie man das macht. Ich mache mir im Rahmen dieser Frage vor allem Sorgen um meine Uploads/Downloads.

Wordpress-Uploads sind nicht gesichert. Jeder kann den Ordner uploads durchsuchen, es sei denn, Sie verhindern dies mit einem .htaccess:

Options All -Indexes

Die Datei .htaccess muss sich im Ordner uploads befinden. Das sichert sie jedoch nicht wirklich, sondern erschwert lediglich das Auffinden der Dateien. Außerdem können Sie hotlinking verhindern und den Zugriff auf referrer grundlegend einschränken - auch wenn das ein bisschen anders ist, wenn ich es erwähne, ich werde es nicht weiter ausführen, finden Sie viele Informationen dazu.

Natürlich besteht die Möglichkeit, Beiträge als privat zu kennzeichnen oder einen benutzerdefinierten Beitragstyp mit geeigneten Vorlagendateien zu erstellen, um diesen Beitragstyp als privat zu kennzeichnen, 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 tun nur so, als ob sie dies tun. Einige der Gründe sind oben aufgeführt. Ich habe das nur vorgetäuscht, weil ich mir ziemlich sicher bin, dass es nicht jedem bekannt ist - also sei dir dessen bewusst.

Zielsetzung

Ich wollte den Zugriff auf (einige) Uploads bzw. Downloads einschränken können. Und um sicherzustellen, dass niemand unerwünschten Zugriff auf sie hat, nicht zufällig oder wenn jemand den Dateinamen kennt, sollten die Dateien wirklich privat und sicher sein. Immerhin sollten nur bestimmte Personen ausnahmslos Zutritt haben.

Außerdem musste ich die gesamte Site nicht privatisieren, was kontraproduktiv wäre - sie wird für öffentliche Präsentationszwecke verwendet. Außerdem wollte ich, dass die Lösung einfach zu bedienen ist, und zwar aus dem einfachen Grund, dass einige der Leute, die damit arbeiten, nicht genau Computerexperten sind, wie es häufig der Fall ist.

Frage

Daher die Frage, gibt es eine (relativ) einfache Möglichkeit, den Zugriff auf (einige) Uploads und die jeweiligen Downloads einzuschränken? Und wie ich es getan habe, bedeutet das eine Möglichkeit, sie wirklich zu schützen und zu sichern?

11
Nicolai

Ich beantworte hiermit meine eigene Frage, weil ich eine Lösung gefunden habe, aber ich bin wirklich an Ihren Meinungen dazu interessiert. 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. keinen direkten Zugriff auf den Ordner mit den Dateien zulassen;
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

  1. Ich habe das Plugin " wp-downloadmanager " Installiert
    • in wp-content wird dabei ein Ordner mit dem Namen files erstellt.
  2. Ich habe eine .htaccess-Datei zum neuen Ordner files hinzugefügt:
    • inhalt des .htaccess:
      Options All -Indexes
      Order Deny,Allow
      Deny from all
  3. Ich habe eine wichtige Option des Plugins geändert:
    • die Option, die ich meine, ist download method;
    • Ich habe es in output file geändert.
  4. Ich habe einige Dateien über die Plugin-Oberfläche hinzugefügt:
    • es gibt eine Option namens allowed to download;
    • wodurch der Zugriff basierend auf der Benutzerrolle/-fähigkeit eingeschränkt werden kann;
  5. Ich habe ein paar Tests gemacht:
    • kein direkter Zugriff auf die Dateien - nicht über die Adressleiste oder wget;
    • öffentliche Downloads sind über ihre Permalinks erreichbar - ich wähle "Schöne Permalinks: ja" und "Download-URL: Datei-ID" im Optionsfeld - Adressleiste/wget funktioniert auch;
    • geschützte, eingeschränkte Downloads sind nur verfügbar, wenn Sie als Benutzer mit der richtigen Rolle/den richtigen Funktionen angemeldet sind.

Abschließende Gedanken

Ich denke, die Lösung folgt ziemlich genau den Forschungsergebnissen. Abgesehen davon, die Dateien außerhalb zu platzieren. Das Einschränken des Zugriffs auf das Verzeichnis/das Schützen des Verzeichnisses und das Verarbeiten von Dateianforderungen durch ein Skript ist jedoch vollständig. Die Zugriffsbeschränkung wird vom .htaccess übernommen und das Skript ist in diesem Fall das Plugin wp-downloadmanger.

Ergänzende Anmerkungen

  • es ist absolut notwendig den download method in output file zu ändern
  • und natürlich ist es ein muss , dass die .htaccess-Datei vorhanden ist

  • um zu überprüfen, ob das Plugin die Rolle des Skripts übernimmt, werfen Sie einen Blick auf wp-downloadmanger.php - zu den Zeilen 207 bis 227 (Version 1.6.1). Dies ist als Ergänzung zu den verlinkten Informationen gedacht

8
Nicolai