Wie schütze ich den Inhalt eines Odners vor direktem Zugriff (php)?

2 Antworten

Leg die Bilder in einem per Web nicht erreichbaren Ordner ab - also außerhalb des Web-Verzeichnisses. Dann verlinkst Du die Bilder ausschließlich über eine PHP-Datei die den Login-Status prüft und gibst die Bilder dann über diese PHP-Datei aus.

Woher ich das weiß:Berufserfahrung

dieTrolle 
Beitragsersteller
 15.01.2022, 13:06

Und wie macht man das?

0
threadi  15.01.2022, 13:13
@dieTrolle

Wenn Du so ein Bild einbetten willst sähe der HTML-Code z.B. so aus:

<img src="bild.php?dateiname=example.jpg" alt="">

In bild.php ermittelst Du dann den übergebenen Dateinamen, öffnest die Datei und gibst sie aus. Ganz einfaches Beispiel:

<?php
if( checkLogin() ) {
 header("Content-type: image/jpeg");
 echo file_get_contents("/var/www/pfad/zu/bildern/".$_REQUEST["dateiname"]);
} 

Wie gesagt: nur ein grobes Beispiel was Du abhängig von deinem PHP-Aufbau adaptieren müsstest. Achte auch auf den korrekten Content-type bei der Ausgabe der Datei.

1

Du kapselst den Bereich ab, beispielsweise mittels einer passenden .htaccess-Datei.

Über diese sollte sich denke ich auch etwas implementieren lassen, um den Zugriff unter bestimmten Umständen zu gewähren.
Falls nicht, dann kannst du etwas tricksen und eine PHP-Datei erstellen, in der du einen Passwort-Schutz implementierst und ann die Files mittels read_file und passend gesetzten Headern an den Clienten zurückliefert.