1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Bilder im Web schützen

  • g0bl1n
  • 16. Mai 2011 um 14:51
  • Unerledigt
  • g0bl1n
    4
    g0bl1n
    Mitglied
    Reaktionen
    1
    Punkte
    121
    Beiträge
    21
    • 16. Mai 2011 um 14:51
    • #1

    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

  • damike
    8
    damike
    Mitglied
    Reaktionen
    11
    Punkte
    681
    Beiträge
    111
    • 16. Mai 2011 um 14:58
    • #2

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

  • latinchriz
    3
    latinchriz
    Mitglied
    Punkte
    55
    Beiträge
    10
    • 16. Mai 2011 um 15:14
    • #3

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

  • phpwutz
    2
    phpwutz
    Mitglied
    Reaktionen
    1
    Punkte
    41
    Beiträge
    7
    • 16. Mai 2011 um 15:23
    • #4
    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.

  • g0bl1n
    4
    g0bl1n
    Mitglied
    Reaktionen
    1
    Punkte
    121
    Beiträge
    21
    • 16. Mai 2011 um 17:20
    • #5
    Zitat von latinchriz

    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 :grinning_squinting_face:
    habs zwar noch nicht genau verstanden aber werds mir gleich mal anschaun und ausprobieren.

    Danke einstweilen :)

  • phpwutz
    2
    phpwutz
    Mitglied
    Reaktionen
    1
    Punkte
    41
    Beiträge
    7
    • 16. Mai 2011 um 17:27
    • #6

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

  • spinball
    11
    spinball
    Mitglied
    Reaktionen
    67
    Punkte
    1.192
    Beiträge
    223
    • 16. Mai 2011 um 20:12
    • #7

    Dir ist bewusst, dass man htaccess Dateien auch einfach in das Verzeichnis der Bilder geben kann?

  • phpwutz
    2
    phpwutz
    Mitglied
    Reaktionen
    1
    Punkte
    41
    Beiträge
    7
    • 16. Mai 2011 um 20:35
    • #8

    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?

  • g0bl1n
    4
    g0bl1n
    Mitglied
    Reaktionen
    1
    Punkte
    121
    Beiträge
    21
    • 16. Mai 2011 um 20:45
    • #9

    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

  • Paulchen
    1
    Paulchen
    Gast
    • 17. Mai 2011 um 01:32
    • #10

    Dir ist eh bewusst, dass man damit alle Dateien auf Laufwerk D: abrufen kann, die der Webserver lesen kann?

  • g0bl1n
    4
    g0bl1n
    Mitglied
    Reaktionen
    1
    Punkte
    121
    Beiträge
    21
    • 17. Mai 2011 um 13:36
    • #11
    Zitat von Paulchen

    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 :winking_face:
    stimmt aber natürlich.. im weiteren werde ich es wohl noch ändern

  • phpwutz
    2
    phpwutz
    Mitglied
    Reaktionen
    1
    Punkte
    41
    Beiträge
    7
    • 17. Mai 2011 um 19:30
    • #12

    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?

  • Paulchen
    1
    Paulchen
    Gast
    • 17. Mai 2011 um 20:24
    • #13
    Zitat von phpwutz

    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.

  • phpwutz
    2
    phpwutz
    Mitglied
    Reaktionen
    1
    Punkte
    41
    Beiträge
    7
    • 18. Mai 2011 um 00:47
    • #14

    ah gut, wieder was neues gelernt :)

  • g0bl1n
    4
    g0bl1n
    Mitglied
    Reaktionen
    1
    Punkte
    121
    Beiträge
    21
    • 18. Mai 2011 um 10:18
    • #15

    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
    <?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);
    ?>
    Alles anzeigen



    aufgerufen wirds mit myimage.php?image=***md5***

    spricht da jetzt noch was dagegen? :grinning_face_with_smiling_eyes:
    rechte für die Datenbank liegen nur lokal vor.

  • Paulchen
    1
    Paulchen
    Gast
    • 18. Mai 2011 um 11:34
    • #16
    Zitat von g0bl1n

    aber wenn ich den mimetyp weglassen sollte es doch genauso funktionieren oder?

    Nein. Der Browser erkennt das dann wahrscheinlich nicht mehr als Bild.

    Zitat von g0bl1n

    spricht da jetzt noch was dagegen? :grinning_face_with_smiling_eyes:

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

  • g0bl1n
    4
    g0bl1n
    Mitglied
    Reaktionen
    1
    Punkte
    121
    Beiträge
    21
    • 18. Mai 2011 um 17:19
    • #17
    Zitat von Paulchen


    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

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung