kostenloser Webspace werbefrei: lima-city


php verstecken

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    youtvti

    youtvti hat kostenlosen Webspace.

    ich habe folgende proiblem

    1)ich will "img.php" von neugierige schutzen

    function/img.php ist auslesen von bilder im ordner
    <?php
        $page = "head/errorhead.php";
        if (!isset($_SERVER['HTTP_REFERER'], $page)) {
            header("HTTP/1.1 301 Moved Permanently");
            header("Location: http://youtvti.lima-city.de");
        }
        if (isset($_GET['bildname'])) {
        $filename = '../images/' . $_GET['bildname'];
             $info = getimagesize($filename);
             switch($info[2]) {
                case 1: //gif
                    header("Content-type: image/gif");
                break;
                case 2: // jpeg
                    header("Content-type: image/jpeg");
                break;
                    case 3: // png
                    header("Content-type: image/png");
                break;
                case 4: // jpg
                    header("Content-type: image/jpg");
                break;
             }
            readfile($filename);
            exit;
        }
    ?>

    auslessen in head/error head.php

    <img src="function/img.php?bildname=logo.jpg" alt="">


    ich habe schön mit "deny from all" in ordner "function" probiert aber zeigt kein bild mehr an

    2) gibt möglichkeit so dass in Quelltext kein Bild Link nicht mehr einzeigt?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,

    als erstes ein wichtiger Hinweis, dein Code enthält eine üble Sicherheitslücke. Oder ist das hier etwa nicht der Quelltext deiner error.php im Root-Verzeichnis :smokin:
    <?php
        $myinclude = 'head/errorhead.php';
        if (file_exists($myinclude))
        require $myinclude;
    ?>
    <div id="errorlinks">
        <?php
            $myinclude = 'split/errorL.php';
            if (file_exists($myinclude))
            require $myinclude;
        ?>
    </div>
    <div id="errorrechts">
    	<?php
            $myinclude = 'split/regist.html';
            if (file_exists($myinclude))
            require $myinclude;
         ?>
    </div>
    <?php
        $myinclude = 'head/errorfooter.php';
        if (file_exists($myinclude))
        require $myinclude;
    ?>


    Aber zurück zu deiner Frage, erkläre doch bitte was du damit meinst, dass du keinen Bildlink mehr haben willst, wie willst du denn dann ein Bild einbinden?
    HTML ist nur eine Beschreibungssprache und in dem Fall beschreibt die URL halt die Bildadresse, wie sonst sollte der Browser wissen, welches Bild er laden soll?

    Also beschreibe einfach genauer, was dein Ziel ist, dann ist es leichter dir zu helfen!

    Mit freundlichen Grüßen
  4. Diese Frage wird immer wieder gestellt.
    Es ist gar nicht nötig, ein Bild derartig zu schützen. Die Frage ist eigentlich: Was sind deine Sorgen dabei?

    Wenn ein Bild auf der Seite dargestellt wird, dann kann man es auch als Bilddatei anschauen. Das lässt sich kaum umgehen.
    Wenn das Bild in einem geschützten Bereich steht, dann prüfe die Session auch im PHP-Programm mit dem Bild. So kann man das Bild nicht einfach mit der richtigen Adresse anschauen, sondern muss angemeldet sein.
    Wenn du Angst hast, dass jemand anders dein Bild über deine Adresse einbindet, dann prüfe den Referrer.
    Ist er leer, oder zeigt zu deiner Seite -> OK
    Enthält er etwas anderes -> Blockieren

    Ich möchte auch noch die Data-Urls erwähnen. Das ist eine ganz andere Möglichkeit, Bilder einzubinden. Natürlich mit vielen Vor- und Nachteilen. Dabei entfällt die Bildadresse komplett.


    Eins noch zur Sicherheitslücke, die nemoinho gefunde hat:
    $filename = '../images/' . $_GET['bildname'];

    Lass das nicht so stehen. Besser, du listest alle erlaubten Bilder auf.
    $erlaubt=array("Bild1.png","Baum.bmp","Fotoxy.jpg");
    if (in_array($_GET['bildname'],$erlaubt,true) {
      // Bild ausliefern
    } else {
      // Fehlermeldung
    }
  5. ja gibt es!

    Du kannst das bild in einem Verzeichnis speicher, das nicht öffentlich zugänglich ist. Dann lässte du das Bild von PHP mit base64 durhclaufen und das Ergebnis davon fügst du in den src attribut deines img tags

    Kurzes Beispiel:

    ...
    $file = base64_encode(file_get_contents( "../offentlich_nicht_zuganglich/file.jpg" ));
    echo "<img src='data:image/gif;base64,".$file."' alt='Dein Bild ohne Pfad'>";
    ...


    PS: das hindert aber nicht jemanden das Bild trozdem auf seinem PC zu speichern. Fakt ist, wenn du ein Bild anzeigen willst, dann muss man es auch zugänglich machen.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!