Ausgangspunkt war ein eigentlich simples, aber nerviges Problem:
Wie kann ich bestimmten Nutzergruppen in WordPress bestimmte Dateien zeigen – ohne Plugin-Wahnsinn?
Klar, es gibt unzählige Plugins. Aber die meisten waren zu gross, zu kompliziert, zu speziell – oder haben sich mit anderen Plugins gebissen. Für meinen Zweck? Völlig überdimensioniert.
Im Rahmen eines Workshops haben wir das Thema dann konkret angepackt. Erst dachten wir: “Dann schreiben wir halt selbst ein Plugin.”
Spoiler: Keine gute Idee!
Denn schnell zeigte sich: Server ticken unterschiedlich. Manche Hoster lassen kaum Server-Konfiguration zu, andere sperren Verzeichnisse ausserhalb des WebRoots. Wir wollten aber keine High-End-Sicherheitslösung – nur eine pragmatische Barriere für neugierige Links und KI-unterstützte Crawler.
Die Lösung: Wenig Code, viel Wirkung
Also schrieben wir ein kleines Setup, das ohne viel Schnickschnack funktioniert. Kein Fort Knox, aber für viele Anwendungsfälle sicher genug. Und: leicht anpassbar, ganz ohne Plugin-Overhead.
Im Wesentlichen braucht es nur drei Dateien – verteilt auf zwei Verzeichnisse –, zusätzlich zu den Dateien, die du schützen willst. Das macht die Lösung einfach, übersichtlich und schnell verständlich.
Hinweis: Wenn du hochsensible Daten schützen willst, nutze besser etablierte Plugins oder lagere die Dateien komplett ausserhalb des Webservers.
Der Aufbau: Zwei Verzeichnisse, drei zentrale Dateien
1. protected
(innerhalb des WebRoots)
Hier wird der Zugriff kontrolliert:
.htaccess
: Leitet alle Dateianfragen ancheck-access.php
weitercheck-access.php
: Prüft, ob die Person Zugriff auf die angeforderte Datei haben darf – zum Beispiel, ob sie zur richtigen WordPress-Nutzergruppe gehört und nur erlaubte Dateitypen anfordert. Gibt die Datei nur dann aus, wenn die Berechtigung stimmt.
2. secure-files
(ausserhalb des WebRoots)
Hier liegen die geschützten Dateien:
config/secure-config.php
: Hier legst du fest, welche Gruppen auf welche Dateien zugreifen dürfen- Die geschützten Dateien, z. B.
gruppe-1/test.pdf
Wird z. B. https://deine-domain.ch/protected/gruppe-1/test.pdf
aufgerufen, prüft das Skript den Zugriff – und liefert nur bei Berechtigung die Datei aus.
Eine einfache Lösung, vielseitig einsetzbar
Wir wollten kein weiteres Mammut-Plugin bauen, sondern ein schlankes Beispiel, das leicht anpassbar ist – oder als Grundlage für eigene Lösungen dienen kann.
Dieses Projekt haben wir gemeinsam im Workshop-Team entwickelt und auch so dokumentiert: ausführlich, nachvollziehbar und so gestaltet, dass es als Grundlage für weitere Workshops oder eigene Anpassungen dienen kann.
Den vollständigen, dokumentierten Code in Englisch findest du hier:
GitHub: Easy-File-Lock
Feedback, Ideen oder Erfahrungsberichte? Immer gerne.
Wir übernehmen natürlich keine Garantie für absolute Sicherheit – aber vielleicht sparst du dir damit Zeit, Nerven und ein paar Plugin-Abstürze.
Viel Spass beim Ausprobieren!
Schreibe einen Kommentar