Hallo,
ich weiß, dass man Bilder nicht wirklich schützen kann..
Was ich will ist auf meiner Homepage einen geschützten Bereich, welcher nur mit login betreten werden kann. Das ist soweit auch kein Problem (verwende PHP).
Auf diesen Seiten soll es auch Bilder geben. Und die möchte ich nur für eingelogte Gäste hergeben.
Ich habe mir das System bei Windows Live ein bischen angesehen. Die verwenden 2 Methoden.
1) Ein 1-pixel Bild als transparent behandeln und über das zu schützende Foto geben.
-> Bild kann nicht direkt angeklickt werden und der Ort somit nicht ermittelt
2) Hier ein Link:
http://blufiles.storage.msn.com/y1m-8gTOBoxPPj…z4QakfNGQ2Qjzjg
zu meinem Profilbild.
Wie ihr seht wird das Bild einfach nicht mit dem echten Speicherort aufgerufen. Das hat den Vorteil, dass ich das Bild auch an wen anderen schicken kann, den Speicherort und somit auch andere Bilder die dort liegen aber nicht erreiche.
Genau das hätte ich gern. Weiß jemand wie ich soetwas mache? Wenn nein, kennt ihr andere Methoden um an mein Problem heranzugehen?
danke im Voraus und greez
Bilder im Web schützen
-
-
Keine direkte Antwort fürs Problem:
Aber z.B. Browser wie Safari zeigen die geladene Bilder in einer Liste an - ist daher auch keine Hexerei die zu speichern. Eine Lösung: Flash -
Bilder schützen im Web ? Vergiss es sobald es bei mir am Bildschirm ist brauch ich nur die DRUCK Taste drücken wenn es mir zu lästig ist im Chrome die Entwicklerbox aufzurufen und mit der Lupe übers Bild zu fahren um mir die URL darauf zu holen.
-
in eine eigene php-datei zB myImage.php?image=hash_des_bildes
sollte helfen - dann kannst du
aufrufen, wobei du natürlich aus dem hash dann noch die URL zum bild generieren musst in myImage.phpDamit kannst du dann die Bilder außerhalb deines htdocs-Ordners ablegen, so dass man nur noch über die php-datei drauf zugreifen kann.
Wenn man den Link zur PHP-Datei kennt (bei der du natürlich immer noch eine Login-Abfrage durchführen kannst bevor das Bild angezeigt wird) kann man natürlich immer noch mit Datei->speichern das Bild abspeichern.
hoffe das hat geholfen.
-
Bilder schützen im Web ? Vergiss es sobald es bei mir am Bildschirm ist brauch ich nur die DRUCK Taste drücken wenn es mir zu lästig ist im Chrome die Entwicklerbox aufzurufen und mit der Lupe übers Bild zu fahren um mir die URL darauf zu holen.
also entweder hast du meine Frage nicht durchgelesen oder ich habs zu kompliziert geschrieben... ich will nicht, dass sie nicht heruntergeladen werden können, sondern viel mehr, dass kein unbefugter sie erreicht bzw. den Ordner mit den Bildern.
phpwutz: das klingt ziemlich nach dem was ich suche
habs zwar noch nicht genau verstanden aber werds mir gleich mal anschaun und ausprobieren.
Danke einstweilen -
naja falls du (nach eingehender beschäftigung mit dem ansatz) noch fragen hast - this is the place
Den mime-type also das "image/gif" sollte natürlich je nach bildformat gesendet werden, funktioniert mit "image/png" genau analog wie jpg.
du kannst natürlich auch den relativen bildpfad als parameter an das phpscript mitgeben, ist allerdings sehr unsicher (denk nur mal daran, was passiert wenn jemand myImage.php?image=../../path/to/.htaccess aufruft...)
-
Dir ist bewusst, dass man htaccess Dateien auch einfach in das Verzeichnis der Bilder geben kann?
-
kann man schon - aber wenn er eh schon einen userlogin implementiert hat, warum die user dann zwingen, dass sie sich nochmal über den http-login anmelden müssen?
-
-
Dir ist eh bewusst, dass man damit alle Dateien auf Laufwerk D: abrufen kann, die der Webserver lesen kann?
-
Dir ist eh bewusst, dass man damit alle Dateien auf Laufwerk D: abrufen kann, die der Webserver lesen kann?
.. was nicht weiter schlimm ist, da ich auf dem laufwerk aktuell genau 2 Bilder liegen hab
stimmt aber natürlich.. im weiteren werde ich es wohl noch ändern -
damit
könntest du auch noch den mimetype automatisch generieren lassen, falls du auch pngs/gifs anbieten willst.Achja und $_GET bzw. $_POST würde ich IMMER escapen, wenn das script nicht im LAN läuft
Ansonsten funktionierts jetzt so wie dus dir vorgestellt hast?
-
könntest du auch noch den mimetype automatisch generieren lassen, falls du auch pngs/gifs anbieten willst.
Um den MIME-Type zu bekommen, ist aber eher mime_content_type (deprecated) bzw. finfo_file (dazu braucht man PHP 5.3 oder die PECL fileinfo-Extension) gedacht.
-
ah gut, wieder was neues gelernt
-
also ich habs jetzt nicht ausprobiert.. aber wenn ich den mimetyp weglassen sollte es doch genauso funktionieren oder?
mein myimage.php sieht jetzt so aus:PHP
Alles anzeigen<?php header('Content-Type: image/jpg'); $pfad="D:/server/fail.jpg"; $imagehash=$_GET['image']; if($mycon=mysql_connect("localhost","*nutzer*","*passwort*")) { mysql_select_db("homepage"); $result=mysql_query("SELECT name, path FROM imagepath WHERE hash='".$imagehash."'"); if($result!=false&&mysql_num_rows($result)==1) { $name=mysql_result($result,0,0); $path=mysql_result($result,0,1); $pfad=$path.'/'.$name; } mysql_close($mycon); } readfile($pfad); ?>
aufgerufen wirds mit myimage.php?image=***md5***
spricht da jetzt noch was dagegen?
rechte für die Datenbank liegen nur lokal vor. -
aber wenn ich den mimetyp weglassen sollte es doch genauso funktionieren oder?
Nein. Der Browser erkennt das dann wahrscheinlich nicht mehr als Bild.
spricht da jetzt noch was dagegen?
Jup. Stell dir vor, ich ruf dein Skript mit ?image='+OR+1=1+-- auf. Wie schaut denn dann deine SQL-Abfrage aus?
Da hast du es dann mit einer SQL-Injection zu tun. Dagegen hilft Escapen aller Eingabedaten oder Verwenden eines Prepared Statements (Link führt allerdings zur MySQLi-Erweiterung von PHP, die MySQL-Erweiterung kann das anscheinend gar nicht; PDO kann's auch).
-
Jup. Stell dir vor, ich ruf dein Skript mit ?image='+OR+1=1+-- auf. Wie schaut denn dann deine SQL-Abfrage aus?
Ach Gott ihr treibt mich noch in den Wahnsinn xD
.. na zum Glück gibts so geduldige Menschen wie euch^^
ich schätze ich sollte mich mal erst besser in das Thema einarbeiten bevor ich ein ernsthaftes Projekt mache das online gehen soll.
danke und grüße
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!