[PHP] RFI + LFI vermeiden

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums

  • Quelle: tionsys.de + erweiterte Anmerkungen


    /e: Bug rausgehaut, danke an @BubleBub:

  • Nabend ich hätte eine Frage zu diesem Satz hier.


    Zu guter letzt noch den Tipp: Seiten in ein Unterverzeichnis. Dann wird ein String vor dem $_GET gesetzt und quasi ausgeschlossen, dass eine externe Seite eingebunden wird.


    meinst du damit, dass das Verzeichnis evntl so aussieht?


    /var/www/controlpanel/index.php


    und hierher die "templates"?


    /var/www/controlpanel/tmpl/


    oder sollten dann die "templates" hier liegen:


    /var/www/tmpl



    Lg Cal44

  • if(preg_match('/^[a-z]+$/', $_GET['page'] == false)

    PHP
    if(preg_match('/^[a-z]+$/', $_GET['page']) == false)


    Klammer fehlt...
    Eleganter:

    PHP
    if(!preg_match('/^[a-z]+$/', $_GET['page']))


    /var/www/controlpanel/index.php
    und die templates
    /var/www/controlpanel/tmpl/


    Info auch:
    Bei Hostings hat man meistens nen OpenBaseDir.
    D.h. da wird ein bisschen geholfen.


    Oder bsp. wie ich das ganze immer regele...


    PHP
    $site = strtolower($_GET['site']); // PHP Dateien sind in dem Sinne immer klein, Rechtschreibfehler nicht mehr schlimm
    if(file_exists('pages/'.$site.'.php'))
    {
      	include_once('pages/'.$site.'.php');
    }
    else
    {
      	include_once('pages/error_404.php');
    }


    So ist man größtenteils abgesichert :rolleyes:

    Miete mich (nicht) :love:

  • Ist es nicht besser wenn man das so hier regelt?


  • Man braucht sich aber keinen RFI schutz einbauen, wenn man in seinen PHP Scripten keine $_GET Varriabeln verwendet oder liege ich da falsch?


    Wenn du $_GET, $_POST und einige $_SERVER ( useragent z.B. ) nutzt und mit diesen Variablen dateien einbindest, musst du dich davor schützen.
    Gegen RFI reicht aber auch ein einfacher Check mit file_exists oder das Speichern der Templates in einem anderen Verzeichnis.


    Oder bsp. wie ich das ganze immer regele...

    PHP
    $site = strtolower($_GET['site']); // PHP Dateien sind in dem Sinne immer klein, Rechtschreibfehler nicht mehr schlimm
    if(file_exists('pages/'.$site.'.php'))
    {
          include_once('pages/'.$site.'.php');
    }
    else
    {
          include_once('pages/error_404.php');
    }


    So ist man größtenteils abgesichert :rolleyes:


    Gegen RFI, aber nicht, wenn so etwas kommt:

    Code
    index.php?site=../../images/upload/avatar45.png


    Und in Avatar45 ein Schadcode drinne ist ( z.B. weil es ein Avatar ist, der hochgeladen wurde :whistling: )
    Wie man Schadcodes in Bilder steckt, erzähle ich jetzt hier mal nicht :D

  • Das ist jezz nur für VServer gedacht oder auch für die eigene Hompage? :D


    Das ist jetzt für die eigene Homepage gedacht und dient der Abwehr einer Hackermethode, bei der fremder und eventuell Schädlicher Code eingeschleust wird. Das ist die kurze Variante der Erklärung ;)