Bilder im Web schützen

  • 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

  • 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. :)

  • Code
    header('Content-Type: image/gif');
    readfile('path/to/myimage.gif');


    in eine eigene php-datei zB myImage.php?image=hash_des_bildes
    sollte helfen - dann kannst du

    Code
    <img src="myImage.php?image=some_md5_or_similar_hash" />


    aufrufen, wobei du natürlich aus dem hash dann noch die URL zum bild generieren musst in myImage.php

    Damit 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 :D
    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...)

  • myimage.php sieht bei mir jetzt so aus :)
    sollte also funktionieren und auch keine Sicherheitsprobleme verursachen, da D in dem Fall ein anderes Laufwerk ist.

    PHP
    <?php
    header('Content-Type: 
    image/jpg');
    $pfad="D:/".$_GET['image'];
    readfile($pfad);
    ?>



    gibt ein fettes Dankeschön

  • 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

    PHP
    $extension = pathinfo($filename, PATHINFO_EXTENSION);


    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.

  • 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:



    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!