.htaccess - Bilder nur von Server anzeigen lassen

Da Hacker

Erfahrenes Mitglied
Hi Leute,

ich habe bereits sehr oft nach einer Lösung gesucht, aber ich konnte nichts finden. Wahrscheinlich ist mein Problem auch so trivial, dass es für euch leicht zu lösen ist.

Es geht darum, dass ich ein Verzeichnis mit 425 Bildern habe. Dieses Verzeichnis möchte ich vor einem direkten Zugriff (also z.B. durch direkte URL-Eingabe) schützen. Das funktioniert auch soweit, da ich in meiner .htaccess-Datei "deny from all" angegeben habe.

Das Problem ist nun allerdings, dass ich im Elternverzeichnis eine PHP-Datei habe, die diese Bilder anzeigen soll. Und das funktioniert leider, leider gar nicht****** Obwohl ich "allow from Subdomain.meineURL.de" angegeben habe.

Wieso funktioniert das nicht? Das klingt doch alles so logisch, dass es durchaus klappen sollte. Oder kann man das gar nicht realisieren? Gibt es dazu Alternativen?

Vielen Dank schonmal im Voraus******
 
Also ich habe das gleiche mit dateien gemacht.
Ich lese diese via php aus und das funktioniert.

Gibst du die Bilder nur per HTML Direktlink aus?
Dann könnte es wahrscheinlich daran liegen.
Es bringt dann auch nix die eigene Domain in die allow Liste zu setzen,
da dann für jedes Bild ein Request von deinem Webbrowser gemacht wird,
also von der Besucher IP und nicht durch deinen Server aufgerufen wird.

Hoffe ich habe es einigermaßen verständlich erklärt.
 
Zuletzt bearbeitet:
Hallo jannicars,

hey vielen Dank für deine schnelle und hilfreiche Antwort.
Achso, verstehe. Ja PHP ist bei mir nur dazu da, den HTML-Code für die Bilderanzeige zu generieren.

Hmm, das ist ja ärgerlich! Gibt es denn Alternativen dazu? Schließlich muss ich ja davon ausgehen, dass der Browser das Bild anzeigt.

Danke auf jeden Fall für die Antwort. Das eröffnet mir den Blick schon weiter auf die ganzen Feinheiten.
 
Hmm, ja okay. Ich wollte mich eigentlich davor wehren, aber das macht schon Sinn :)

Vielen Dank jannicars, du hast mir sehr geholfen!
 
Für alle die nun meine Lösung interessiert:

Ich habe mir eine "bild.php" erstellt und diese verwende ich im "<img>"-Tag beim "src"-Attribut. Dazu übergebe ich per GET-Parameter die jew. Bildnummer.

Die bild.php sieht (in Etwa) so aus:
PHP:
session_start();
header('Content-type: image/jpeg');

$imgname = "./Bilder/Bildnummer" . $_GET["number"] . ".jpg";

$im = @ImageCreateFromJPEG ($imgname); 				/* Versuch, Datei zu öffnen */
if (!$im || $_SESSION["Authorized"] == false) { 	/* Prüfen, ob fehlgeschlagen */
	$im = ImageCreate (250, 30);       				/* Erzeugen eines leeren Bildes */
	$bgc = ImageColorAllocate ($im, 255, 255, 255);
	$tc  = ImageColorAllocate ($im, 0, 0, 0);
	ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc); 
													/* Ausgabe einer Fehlermeldung */
	ImageString($im, 1, 5, 5, "Fehler beim Öffnen von: $imgname", $tc); 
}

ImageJpeg($im);

Hoffe es hilft jemandem
 
Warum erstellst du immer wieder ein neues Bild, wenn man nicht autorisiert ist?
Das ist doch unnötige Ressourcenverschwendung.
Speicher lieber ein weißes Bild mit dem Text "Bild nicht gefunden" und lass es immer aufrufen, wenn man nicht autorisiert ist.

Die Bilderfunktionen in PHP brauchen massig leistung.
 
Zuletzt bearbeitet:
Jannicars,

das ist ein berechtigter Punkt. Danke für den Hinweis.
Allerdings ist die Erzeugung eines Fehlerbildes eher die Ausnahme. Das heißt, das Bild wird praktisch *nie* erstellt. Denn wenn man nicht authorisiert - also nicht eingeloggt ist - kommt man gar nicht zu den Bildern. Daher kann man diese Kleinigkeit meines Erachtens nach vernachlässigen.
Zudem handelt es sich hier um eine reine passwortgeschützte Auflistung von Bildern - also um kein wirklich ernsthaftes Projekt bzw. kein komplexes.

Es ist aber gut, dass du mich auf diese Sachen hinweist. Danke! Ich werde das in Zukunft im Hinterkopf behalten.

Beste Grüße
 

Neue Beiträge

Zurück