• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Schutz vor Einbindung

NetAktiv

Senior HTML'ler
Hallo,
wenn man ein Bild bei der Fotocumminity im Browser anzeigen will, dann funktioniert das, wie das Beispiel http://cdn.fotocommunity.com/photos/19903286.jpg zeigt. Will man aber das gleiche Bild in einer HTML-Seite einbinden wie im folgenden Code
HTML:
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Image-Test</title>
</head>
<body>
<img alt="foto" src="http://cdn.fotocommunity.com/photos/19903286.jpg" style="width: 846px; height: 559px" />
</body>
</html>
dann bekommt man eine Content Linking not allowed Fehlermeldung (eventuell muss man erst einen Refresh machen, weil der Browser das Bild sonst vom interaktiven Versuch das Bild aus dem Cache benutzt). Ich möchte meine Bilder auf der Homepage auch so schützen.

Frage: Wie kann ich nun mit PHP feststellen, dass ein Request interaktiv bzw. durch Einbindung erfolgt?

Grüße, Rainer
 
Zuletzt bearbeitet:
Danke für den Hinweis, nur das mit dem Nachlesen hättest dir sparen können. Nachlesen kann man, wenn man weiß, wonach man sucht. Ich hab nach der Fehlermeldung gesucht und mir die PHP $_RESPONSE angesehen und sonst noch rumgegoogelt. Nur, wie gesagt, wenn man nicht weiß, wonach man sucht, findet man manchmal nichts. Davon abgesehen ist nicht jeder Web Server auch ein Apache, einer meiner Provider hat Windows Server 2008 R2 mit IIS7.0.

Grüße, Rainer
 
Die Info über den IIS fehlte. In dem Fall müsstest Du das Verhalten von mod_rewrite mittels PHP nachbauen. Also: Referer auswerten (in $_SERVER zu finden).
 
Das mit dem HTTP_REFERER stand ja im rewrite_mod, auf das du mich verwiesen hattest. Beim ersten Test hatte ich mir natürlich nicht nur $_RESPONSE anzeigen lassen, sondern alles mit phpinfo(), aber den Unterschied nicht gesehen. Erst durch genauere Tests habe ich nun festgestellt, dass der HTTP_REFERER von allen von mir getesteten Browsern nicht gesetzt wird, wenn man die URL in der Adressleiste eingibt, bei IFRAME aber gesetzt wird. Unterschiedlich verhalten sie sich bei windows.open, IE setzt nicht, die anderen schon. Dass es Unterschiede gibt, steht ja auch in der rewrite-Doku. Hier nochmals mein Ergebnis als Tabelle:

[TABLE="width: 497"]
[TR]
[TD]Browser
[/TD]
[TD]Adresse[/TD]
[TD]window.open[/TD]
[TD]iframe[/TD]
[/TR]
[TR]
[TD]IE 9.0[/TD]
[TD]N[/TD]
[TD]N[/TD]
[TD]Y[/TD]
[/TR]
[TR]
[TD]Safari 5.1[/TD]
[TD]N[/TD]
[TD]Y[/TD]
[TD]Y[/TD]
[/TR]
[TR]
[TD]Firefox 5.0[/TD]
[TD]N[/TD]
[TD]Y[/TD]
[TD]Y[/TD]
[/TR]
[TR]
[TD]Chrome 12.0[/TD]
[TD]N[/TD]
[TD]Y[/TD]
[TD]Y[/TD]
[/TR]
[TR]
[TD]Opera 11.5[/TD]
[TD]N[/TD]
[TD]Y[/TD]
[TD]Y[/TD]
[/TR]
[/TABLE]

Interessant wäre noch zu wissen, was passiert, wenn man die Daten über XMLHttpRequest (im Browser) oder über PHP (sozuagen einen Proxy schreibt) holt. Aber ich teste das nun nicht mehr.
 
Zuletzt bearbeitet:
Natürlich. Was sollte denn auch als Referer da stehen, wenn die URL direkt angegeben wird? Hinzu kommt noch, dass einige Internetnutzer die Bekanntgabe des Referers in ihrem Browser unterdrücken. Das ist eine freiwillige Angabe. Daher ist das zwar eine nette Technik die in vielen Fällen auch korrekt "zuschlagen" wird, aber kein Allheilmittel.
 
Zurück
Oben