Tach Community,
man sieht es immer häufiger. direkte links auf bilder werden
mit einer mitteilung beantwortet, doch bitte die seite
regulaer zu besuchen. das verhindert die nutzung der bilder
auf anderen seiten.
das moechte ich auch tun. nun moechte ich nicht unbedingt im
apache einstellungen veraendern. gibt es eine trickreiche
moeglichkeit zu verhindern, dass jemand bilder direkt aufruft?
Naja, nicht trickreich, aber es geht auch mit PHP:
Im Source auf
verlinken, getimage.php prüft dann den Referer (leer oder eigener zulassen) und gibt zuerst den korrekten Content-Type und dann das File selbst aus (welches in einem unzugänglichem Verzeicunis liegt):
$imgdir = "/am/besten/ausserhalb/von/docroot";
$boeserbube = "du\_darfst\_nicht.jpg";
$nichtda = "leider\_nichts\_da.jpg";
$name = str\_replace("/\\", "", $\_GET["b"]); //Sicherheitshalber alle Slashes und backslashes wegwerfen
// falscher Referer
if (!preg\_match('#^$|^http://(www\.)?meinedomain\.de/#',$\_SERVER["HTTP\_REFERER"]))
{
Header("image/jpeg");
readfile("$imgdir/$boeserbube");
exit;
};
// File nicht da
if (!is\_file("$imgdir/$name"))
{
Header("image/jpeg");
readfile("$imgdir/$nichtda");
exit;
}
// Content-Type aus Name
if (preg\_match("/\.jpe?g$/", $name)) Header("Content-Type: image/jpeg");
if (preg\_match("/\.gif$/", $name)) Header("Content-Type: image/gif");
if (preg\_match("/\.png$/", $name)) Header("Content-Type: image/png");
readfile("$imgdir/$name");
… so ungefähr in PHP…
Es geht auch einfacher in .htaccess, sofern mod_rewrite läuft:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [OR]
RewriteCond %{HTTP_REFERER} !^http://(www.)?meine-domain.de/.*$ [NC]
RewriteRule .(gif|jpg|png)$ /boeserbube.jpg
dann erspart man sich das Ersetzen der Tags im Source…
(Alles nicht getestet, ggfs. ist irgendwo noch nen Tippfehler drin)
Alexander