{"id":35,"date":"2024-11-17T10:05:36","date_gmt":"2024-11-17T09:05:36","guid":{"rendered":"https:\/\/www.servicepraxis.com\/members\/?p=35"},"modified":"2025-06-14T11:55:48","modified_gmt":"2025-06-14T09:55:48","slug":"umgang-mit-oeffentlichen-inhalten","status":"publish","type":"post","link":"https:\/\/www.servicepraxis.com\/members\/memberarea\/umgang-mit-oeffentlichen-inhalten\/","title":{"rendered":"Umgang mit \u00f6ffentlichen Inhalten"},"content":{"rendered":"\n<p>Die WordPress Mediathek ist ein zentraler Bestandteil vieler Websites. Sie erm\u00f6glicht es Benutzer:innen Bilder, Videos, PDFs und andere Dateien hochzuladen und sie in Beitr\u00e4gen und Seiten zu verwenden. Ein oft \u00fcbersehener Aspekt betrifft die Zug\u00e4nglichkeit der Inhalte im Upload-Ordner. In WordPress sind diese Inhalte <strong>standardm\u00e4\u00dfig \u00f6ffentlich zug\u00e4nglich<\/strong>, was bei sensiblen oder exklusiven Medien ein Problem sein kann.<\/p>\n\n\n\n<p>Leider ist dies vielen Nutzer:innen nicht bekannt, auch weisen die meisten Programmierer von Plugins f\u00fcr Mitgliedersystemen in der Regel zumindest nicht explizit darauf hin <sup><a href=\"#fussnote\" data-type=\"internal\" data-id=\"#fussnote\">1<\/a><\/sup>. In diesem Artikel beleuchten wir die Risiken und zeigen L\u00f6sungsans\u00e4tze zur Verwaltung sensibler Daten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die WordPress Mediathek und der Upload-Ordner<\/h3>\n\n\n\n<p>In WordPress werden in der Regel alle hochgeladenen Dateien im Ordner <em>wp-content\/uploads<\/em> gespeichert. Auf diese Dateien kann direkt \u00fcber eine URL zugegriffen werden. Das bedeutet, dass jeder, der die genaue Adresse kennt oder err\u00e4t, Zugang zu den Dateien hat, auch wenn die Dateien auf der Website selbst nicht verlinkt sind oder der Link in einem Artikel liegt, der nur Mitgliedern zug\u00e4nglich ist. W\u00e4hrend das f\u00fcr viele Inhalte unproblematisch ist, stellt dies eine <strong>potenzielle Sicherheitsl\u00fccke<\/strong> dar, wenn:<\/p>\n\n\n\n<ul class=\"wp-block-list list\">\n<li>Inhalte exklusiv f\u00fcr bestimmte Nutzer oder Mitglieder gedacht sind.<\/li>\n\n\n\n<li>Sensible Informationen, z.&nbsp;B. vertrauliche Dokumente, hochgeladen werden.<\/li>\n\n\n\n<li>Medien hochgeladen werden, die nicht f\u00fcr die \u00d6ffentlichkeit bestimmt sind.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Risiken des \u00f6ffentlichen Zugriffs auf Uploads<\/h3>\n\n\n\n<p>Sobald Inhalte im Upload-Ordner f\u00fcr alle Nutzergruppen \u00f6ffentlich zug\u00e4nglich sind, ergeben sich daraus verschiedene <strong>Risiken<\/strong>, zu diesen geh\u00f6ren insbesondere:<\/p>\n\n\n\n<p>Wenn sensible Daten ungesch\u00fctzt in den Upload-Ordner gelangen, kann dies zu Datenschutzproblemen f\u00fchren; bei Mitglieds- oder Abo-Websites k\u00f6nnen exklusive, f\u00fcr zahlende Mitglieder bestimmte Inhalte ungewollt f\u00fcr die Allgemeinheit zug\u00e4nglich sein;  internes Material, wie unfertige Grafiken oder Dokumente, k\u00f6nnte vor der Ver\u00f6ffentlichung gefunden und heruntergeladen werden und zu Image- und Markenproblemen f\u00fchren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00f6glichkeiten zum Schutz der Medieninhalte<\/h3>\n\n\n\n<p>Grunds\u00e4tzlich gibt es nat\u00fcrlich auch L\u00f6sungsans\u00e4tze, um solche Dateien zu sch\u00fctzen und sicherzustellen, dass nur berechtigte Benutzer:innen Zugang erhalten. Dabei ist jedoch auch zu beachten, dass nicht jede L\u00f6sung mit der Problematik kompatibel ist.<\/p>\n\n\n\n<div class=\"card-container-group mt-4 mb-4 data-aos_zoom-in data-aos-delay_200 data-aos-duration_400\">\n <div class=\"banderole\">\n  <span class=\"exkurs\">Exkurs<\/span>\n  <div class=\"card-container\">\n\t<div class=\"card\">\t\t\n\t\t<h3>M\u00f6gliches Szenario<\/h3>\n\t\t<p>Unter Beibehaltung der Funktionalit\u00e4t der Mediathek von WordPress sollen kurze <b>Videos<\/b> und <b>Dokumente<\/b> ausschlie\u00dflich f\u00fcr Mitglieder zug\u00e4nglich sein. Hierzu wird ein entsprechender Ordner, z.B. <i>wp-protected<\/i> angelegt und eine entsprechende Funktion programmiert die <b><u>alle<\/u><\/b> Dateien des Typs PDF und MP4 statt in den Standardordner automatisch nach <i>wp-protected\/media<\/i> bzw. <i>wp-protected\/docs<\/i> hochl\u00e4dt. Die Datei <i>.htaccess<\/i> bekommt entsprechende Eintr\u00e4ge, die bewirken, dass diese Dateien nur angezeigt werden, wenn unsere Domain die entsprechende (letzte) Verweisseite ist. Selbst wenn jemandem der direkte Link zur Datei bekannt ist, wird man nun auf eine andere Seite (z.B. die Homepage statt zur eigentlichen Datei) umgeleitet, selbst wenn man in einem Mitgliedersystem angemeldet ist: \n<a href=\"https:\/\/www.servicepraxis.com\/members\/membership\/sicherer-umgang-mit-mediendateien\/\">servicepraxis.com\/members\/membership\/sicherer-umgang-mit-mediendateien\/<\/a>.<\/p>\n\t<\/div>\n  <\/div>\n <\/div>\n<\/div>\n\n\n\n<p>Es gibt spezielle <strong>Plugins<\/strong>, die den Zugriff auf Medieninhalte regeln k\u00f6nnen, wie <em>Prevent Direct Access<\/em> oder <em>Media Folder f\u00fcr WordPress<\/em>. Mit diesen kann der direkte Zugriff auf Dateien blockiert und so der Zugriff auf registrierte Benutzer oder zahlende Mitglieder beschr\u00e4nkt werden. Oftmals werden individuelle Links f\u00fcr Downloads, die nur f\u00fcr autorisierte Benutzer sichtbar sind, generiert. Grunds\u00e4tzlich ist jedoch die Kompatibilit\u00e4t solcher L\u00f6sungen vorab intensiv zu pr\u00fcfen.<\/p>\n\n\n\n<p>Wenn Zugriff auf die <strong>Server-Konfiguration<\/strong> besteht und der Server Apache verwendet, kann man den Ordner f\u00fcr Uploads mittels<em> htaccess<\/em> sch\u00fctzen. Dadurch k\u00f6nnen Zugriffsrechte definiert werden womit z.&nbsp;B. nur bestimmten Benutzern Zugriff gew\u00e4hrt wird. Diese Methode sch\u00fctzt jedoch nur die vorher definierten Dateiformate und funktioniert eventuell nicht auf allen Servern.<\/p>\n\n\n\n<p>Statt des vorgesehenen Standards zu verwenden, kann ein<strong> speziell gesicherter Ordner<\/strong> f\u00fcr vertrauliche Dateien angelegt werden. Mit benutzerdefiniertem Code k\u00f6nnen diese Dateien dann nur f\u00fcr eingeloggte Benutzer abrufbar gemacht werden.<\/p>\n\n\n\n<p>Ein weiterer Ansatz besteht darin, mit entsprechenden Funktionen <strong>Zugriffsregeln<\/strong> zu definieren. Beispielsweise k\u00f6nnte ein Snippet erstellt werden, das den Dateizugriff nur eingeloggten Benutzern erlaubt. Diese L\u00f6sung erfordert jedoch entsprechende Kenntnisse und eine gewisse technische Erfahrung.<\/p>\n\n\n\n<div class=\"wp-block-group card-container-group mt-4 mb-4 d-print-none data-aos_zoom-in data-aos-delay_200 data-aos-duration_400\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-group tab-container\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<ul class=\"nav nav-fill nav-tabs nav-justified flex-column flex-sm-row\" id=\"myTab\" role=\"tablist\">\n<li class=\"nav-item flex-sm-fill\" role=\"presentation\">\n\t<button class=\"active nav-link text-start ps-3 pt-2 pb-2\" id=\"step-one-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#step-one\" type=\"button\" role=\"tab\" aria-controls=\"step-one\" aria-selected=\"true\"> \n\t\t<i class=\"fa-solid fa-house-lock pe-1\"><\/i> Fallbeispiel\n\t<\/button> \n<\/li>\n<li class=\"nav-item flex-sm-fill\" role=\"presentation\"> \n\t<button class=\"nav-link text-start ps-3 pt-2 pb-2\" id=\"step-two-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#step-two\" type=\"button\" role=\"tab\" aria-controls=\"step-two\" aria-selected=\"false\"> \n\t\t<i class=\"fa-brands fa-wordpress pe-1\"><\/i> WordPress\n\t<\/button> \n<\/li>  \n<li class=\"nav-item flex-sm-fill\" role=\"presentation\"> \n\t<button class=\"nav-link text-start ps-3 pt-2 pb-2\" id=\"step-three-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#step-three\" type=\"button\" role=\"tab\" aria-controls=\"step-three\" aria-selected=\"false\"> \n\t\t<i class=\"fa-solid fa-upload pe-1\"><\/i> Upload\n\t<\/button> \n<\/li> \n<li class=\"nav-item flex-sm-fill\" role=\"presentation\"> \n\t<button class=\"nav-link text-start ps-3 pt-2 pb-2\" id=\"step-four-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#step-four\" type=\"button\" role=\"tab\" aria-controls=\"step-four\" aria-selected=\"false\"> \n\t\t<i class=\"fa-solid fa-database pe-1\"><\/i> Functions\n\t<\/button> \n<\/li>\n<li class=\"nav-item flex-sm-fill\" role=\"presentation\"> \n\t<button class=\"nav-link text-start ps-3 pt-2 pb-2\" id=\"step-five-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#step-five\" type=\"button\" role=\"tab\" aria-controls=\"step-five\" aria-selected=\"false\"> \n\t\t<i class=\"fa-solid fa-binoculars pe-1\"><\/i><\/i> Ausblick\n\t<\/button> \n<\/li>\n<\/ul> \n<div class=\"border-grey bg p-3 tab-content\"> \n\t<div class=\"tab-pane fade show active\" id=\"step-one\" role=\"tabpanel\" aria-labelledby=\"step-one-tab\"> \n\t\t<p>Dateien wie beispielsweise Bilder, Videos und Dokumente sind in der Mediathek von WordPress grunds\u00e4tzlich \u00f6ffentlich zug\u00e4nglich. Gerade in geschlossenen Bereichen einer Website m\u00f6chte man jedoch beispielsweise Schulungsunterlagen u.\u00e4. ausschlie\u00dflich (zahlenden) Abonnenten zug\u00e4nglich machen. Hierzu kann man ein Skript zur Auslieferung zwischenschalten, definierte Ordner sch\u00fctzen und mittels einiger Funktionen die Mediathek entsprechend anpassen.<\/p>\n\t<\/div> \n\t<div class=\"tab-pane fade\" id=\"step-two\" role=\"tabpanel\" aria-labelledby=\"step-two-tab\"> \n\t\t<p>Zun\u00e4chst ben\u00f6tigen wir im Hauptverzeichnis der Installation von WordPress eine entsprechende Datei, die zusammen mit der gesamten Umgebung (Konfiguration, Initialisierung etc.) geladen wird. Dort werden die statischen bzw. dynamischen gesch\u00fctzten Ordner definiert. Gleichzeitig \u00fcbernimmt das File die Auslieferung der Dateien und schickt nicht angemeldete Besucher, die versuchen eine gesch\u00fctzte Datei aufzurufen, zum Login.<\/p>\n\t<\/div> \t\n\t<div class=\"tab-pane fade\" id=\"step-three\" role=\"tabpanel\" aria-labelledby=\"step-three-tab\"> \n\t\t<p>Werden Dateien in der Mediathek hochgeladen \u00fcbernimmt ein entsprechendes \u00fcber das Theme einzubindendes File den Vorgang und schickt je nach Konfiguration die Dateien in entsprechende, vorher mittels <i>htaccess<\/i> gesch\u00fctzte Ordner (unabh\u00e4ngig vom Inhalt Zugriff nur mit PHP gestattet). In unserem Fall wird das Zielverzeichnis basierend auf der Dateiendung zugewiesen und der Upload entsprechend verschoben.<\/p>\n\t<\/div> \n\t<div class=\"tab-pane fade\" id=\"step-four\" role=\"tabpanel\" aria-labelledby=\"step-four-tab\"> \n\t\t<p>Grundlegende Funktionen umfassen im Backend die Anpassung der Links in der Mediathek sowie in unserem Fall zus\u00e4tzlich f\u00fcr Profilfotos von Mitgliedern. Parallel werden die Links im Editor (Gutenberg oder Classic Editor) sowie im Plugin zur Mitgliederverwaltung analog behandelt.<\/p>\n\t<\/div>\n\t<div class=\"tab-pane fade\" id=\"step-five\" role=\"tabpanel\" aria-labelledby=\"step-five-tab\"> \n\t\t<p>Anstatt fest definierter Dateiendungen (hier: pdf und mp4) w\u00e4ren beispielsweise bei Bildern Pr\u00e4fixe (public bzw. private) ebenso denkbar wie die Festlegung eines Nutzers der f\u00fcr gesch\u00fctzte Inhalte zust\u00e4ndig ist und dessen Uploads prinzipiell in entsprechend abgesicherte Ordner wandern. Mehr zum Thema Sicherheitsoptimierte Uploads in WordPress mit Codebeispielen f\u00fcr Mitglieder <a title=\"Sicherheitsoptimierte Uploads in WordPress\" style=\"border-bottom: 1px dotted;\" href=\"\/members\/membership\/sicherer-umgang-mit-mediendateien\/\">hier<\/a>.<\/p>\n\t<\/div>\t\n<\/div>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<p>Insbesondere, wenn es sich um ein komplett neues Projekt handelt, w\u00e4re es auch zu \u00fcberlegen, ob man dieses unter WordPress nicht als <strong>Multisite<\/strong> anlegt. Auf diesem Weg lassen sich passwortgesch\u00fctzte Seiten und Kategorien sowie deren Inhalte in der Mediathek von frei zug\u00e4nglichen komplett trennt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p>Der \u00f6ffentliche Zugriff auf Uploads bzw. dessen Ordner kann problematisch sein, besonders wenn sensible oder exklusive Inhalte hochgeladen werden. Mit den richtigen Ma\u00dfnahmen lassen sich die Inhalte der WordPress Mediathek jedoch einigerma\u00dfen effektiv sch\u00fctzen. Von Plugins \u00fcber angepasste Ordnerstrukturen bis hin zu serverseitigen Zugriffskontrollen gibt es individuelle M\u00f6glichkeiten, um sicherzustellen, dass nur berechtigte Benutzer:innen die hochgeladenen Medien bzw. Dateien abrufen k\u00f6nnen.<\/p>\n\n\n\n<p class=\"fs-4 fw-bold\">Gerne werden wir dich auch dabei unterst\u00fctzen.<br>Die <a style=\"border-bottom: 1px dotted;\" href=\"https:\/\/www.servicepraxis.com\/members\/thema\/dateien-sichern-daten-schuetzen\/\">Verantwortung f\u00fcr die Daten deiner Nutzer<\/a> ist unser Job.<\/p>\n\n\n\n<p>Bei allen Schutzma\u00dfnahmen sollte man sich jedoch auch dar\u00fcber im Klaren sein, dass der Personenkreis, der Zugang hat, sich Dateien <strong>herunterladen, speichern und weiterverbreiten<\/strong> kann. Dies gilt f\u00fcr Bilder ebenso wie jede Art von Dokumenten oder Videos (auch bei YouTube ist das ohne gro\u00dfe Kenntnisse m\u00f6glich). Insbesondere bei Mitgliedssystemen empfehlen wir daher zur rechtlichen Absicherung entsprechende Nutzungsbestimmungen.<\/p>\n\n\n\n<p class=\"fs-6\" id=\"fussnote\"><sup>1<\/sup> Vom Hersteller des Plugin Members for WordPress ist ein kostenpflichtiges Tool verf\u00fcgbar, ob dieses s\u00e4mtliche potenziellen Ausnahmen abdeckt sei dahingestellt. <br>Mehr Informationen unter <a href=\"https:\/\/rocketgeek.com\/plugins\/wp-members-download-protect\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">rocketgeek.com\/plugins\/wp-members-download-protect\/<\/a>.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die WordPress Mediathek ist ein zentraler Bestandteil vieler Websites. Ein oft \u00fcbersehener Aspekt betrifft die Zug\u00e4nglichkeit der Inhalte. In WordPress sind diese Inhalte n\u00e4mlich standardm\u00e4\u00dfig \u00f6ffentlich zug\u00e4nglich.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[17,11],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-memberarea","tag-dateien-sichern-daten-schuetzen","tag-mitglieder-websites"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.servicepraxis.com\/members\/wp-json\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.servicepraxis.com\/members\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.servicepraxis.com\/members\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.servicepraxis.com\/members\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.servicepraxis.com\/members\/wp-json\/wp\/v2\/comments?post=35"}],"version-history":[{"count":0,"href":"https:\/\/www.servicepraxis.com\/members\/wp-json\/wp\/v2\/posts\/35\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.servicepraxis.com\/members\/wp-json\/wp\/v2\/media?parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.servicepraxis.com\/members\/wp-json\/wp\/v2\/categories?post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.servicepraxis.com\/members\/wp-json\/wp\/v2\/tags?post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}