Hallo,
standardmäßig sind die hochgeladenen Fotos nicht vor einem Direktzugriff ohne Anmeldung geschützt. Das hab eich wie folgt nachgeholt:
Plugin "LocalFile Editor" installieren und ausführen
Im Plugin dann auf "Lokale Konfiguration" gehen und folgende 2 Zeilen eintragen:
$conf['original_url_protection'] = 'ALL';
$conf['derivative_url_style'] = 2;
Hiermit werden die Orginalbilder über ein PHP-Skript ausgeliefert. Mit der zweiten Zeile sagt man das auch die generierten Bilder (Thumbs etc.) ebenfalls über ein PHP-Skript ausgeliefert werden.
Es sollten folgende .htaccess-Dateien erstellt werden:
/photos/_data/i/ mit folgenden Inhalt:
deny from all
/photos/galleries/
deny from all
/photos/upload/
deny from all
Abschließend muss der Template-Cache resetet werden: -> Werkzeuge -> Wartung -> Kompilierte Vorlagen entfernen.
Die Verzeichnisanzeige wird durch die index.htm in jedem Verzeichnis unterbunden.
Jetzt muss noch Piwigo selbst abgesichert werden. Dazu eine .htaccess im Haupt-VZ erstellen (bei mir photos/.htaccess):
# Security Headers
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header set Referrer-Policy "same-origin"
Header set Permissions-Policy "geolocation=(), midi=(), camera=(), usb=(), magnetometer=(), accelerometer=(), speaker=(), gyroscope=(), microphone=(), vr=(), ambient-light-sensor=()"
Header set Content-Security-Policy " default-src 'none'; connect-src 'self'; font-src 'self' data:; img-src 'self' data: *.tile.openstreetmap.org data: https://piwigo.org; media-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; base-uri 'self'; form-action 'self'"
</IfModule>
Falls man ein Video-VZ unter galleries hat muss die .htaccess für galleries wie folgt aussehen:
<FilesMatch "\.(?:pdf|mov|mp4|m4v|mp3)$">
RewriteEngine On
RewriteCond %{HTTP_HOST}@@%{HTTP_REFERER} !^([^@]*)@@https?://\1/.*
# Deny access to these types
RewriteRule \.(pdf|mov|mp4|m4v|mp3?)$ - [F]
</FilesMatch>
<FilesMatch "\.(?:jpg|jpeg|png|tif|tiff)$">
Deny from all
</FilesMatch>
Ein simples deny from all blockiert sonst das abspielen der Videos auch für angemeldete Benutzer. Jetzt wird dagegen für Bilddateien der Direktzugriff verweigert und bei Videos der Referer des Aufruf überprüft. Falls er von der Seite selbst kommt, kann das Video abgespielt werden. Zwei Nachteile gibt es allerdings: 1. die iOS-App kann keine Videos mehr abspielen, da der Zugriff wegen falschen Referer verweigert wird. und 2. Referer können leicht gefälscht werden! Man sollte deshalb dem Video-VZ nicht einfach video nennen sondern z.B. uidfjkhfuiu76dfg. Darauf kommt keiner. Jetzt sollte der Zugriff auf die Videos zu 99% sicher sein.
Hallo Michael_2022,
Deine Anleitung zum Verhindern des Downloads von Bildern ist bestimmt gut und richtig. Allerdings habe ich es nicht hinbekommen, nachdem ich die Files wie beschrieben erstellt und in die entsprechenden Verzeichnisse hochgeladen habe. Dann noch den Cache geleert - und dann sah ich kein Bild mehr! Da habe ich dann die .htaccess-Dateien wieder gelöscht. Dann war alles wieder... wie vorher.
Was also kann ich falsch gemacht haben? Mein root-Verzeichnis ist, so denke ich, das Verzeichnis mit dem Namen "piwigo". Ist das root-Verzeichnis etwa das falsche?
Muss das "deny from all" vielleicht in den php-Rahmen wie beim local files editor eingefügt werden?
Danke auf jeden Fall für Deine Mühe mit dem Script!
tango-alpha
Offline
Hallo Michael_2022,
könnte es sein, daß ich von einer anderen Aufgabe oder Zielsetzung ausgegangen bin als Du?
Mein Ziel ist, die Bilder vor unbemerktem DOWNLOAD zu schützen.
Du shreibst aber, daß es Dir um die Direktbetrachtung der Bilder auch ohne Anmeldung geht.
Offenbar habe ich Deine Idee von Anfang an nicht gleich verstanden. Könnte DAS sein?
Vielen Dank!
Viele Grüße
tano-alpha
Offline