1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

PHP: Get-sicher?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Apple Pro, 16.12.08.

  1. Apple Pro

    Apple Pro Granny Smith

    Dabei seit:
    13.10.08
    Beiträge:
    15
    Hallo,
    ich habe durch folgenden Code Inhalt aus einer anderen Datei in eine Tabelle gebracht:
    Code:
    <?php include($_GET['i]);
    ?>
    Ich wollte mal wissen ob diese Methode sicher ist, oder man evtl. dadurch alle Dateien auf dem Server auslesen könnte etc.
     
  2. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Nö. Damit kann ein Angreifer jede Datei auf dem Server auslesen (sofern Dein Webserver/Dein (Fast)CGI die betreffenden Zugriffsrechte hat).

    Mit dem Code kannst ein Angreifer sogar Quelltext von einem anderen Server laden und ausführen (z.B., wenn er über GET "http://seinedomain.de/seinboesesskript.phps" übergibt).
     
  3. Maluku

    Maluku Finkenwerder Herbstprinz

    Dabei seit:
    10.05.08
    Beiträge:
    464
    Ich verstehe meistens eh nicht, warum die Leute immer anhand eines URL-Parameters einbinden wollen. Das kann man so gar nicht optimieren Serverseitig.

    Meistens ist es doch so: Man baut eine HTML-Seite als Hauptdesign mit 1,2 PHP tags die die Seite die angezeigt werden soll einbindet. Warum nicht das Haupt design in zwei einfache Funktionen legen :
    header(), footer() und dann diese Datei in jeder anderen einbinden. Da hat man zwar einmal mehr Arbeit, aber dann sehr viel weniger Probleme. Oder gleich ein vernünftiges Templatesystem.

    Oder gibt es sonst noch Gründe für solche Konstruktionen?
     
  4. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    So mache ich das auch. :)
     
  5. mokoi

    mokoi Braeburn

    Dabei seit:
    20.06.08
    Beiträge:
    45
    dann macht ihr aber nur niederkomplexe seiten :)

    In der Regel sieht eine URL so aus: "bla.com/de/profile/max_muster/"
    Was ja Im Prinzip nichts anderes ist als "bla.com/index.php?lang=de&page=profile&name=max_muster".

    An sich ist das nicht unsicher - wichtig ist, dass man die per GET erhaltenen values IMMER erst überprüft bevor man sie weiterverwendet oder die includes (wenn die einzubindenden Seiten feststehen und keine dynamischen Inhalte berücksichtigt werden müssen) via switch-case einbindet:


    Code:
    (isset($_GET['i']) ? ($i = $_GET['i']) : ($i = FALSE);
    
    switch($i) 
    {
        case 'kontakt': 
                    include('contact.inc.php');
        break;
        
        case 'impressum':
                    include('imprint.inc.php');
        break;
        
        default:
                    include('error.inc.php');
    }
     
  6. Maluku

    Maluku Finkenwerder Herbstprinz

    Dabei seit:
    10.05.08
    Beiträge:
    464
    normalerweise würde ich sowass mit der Rewrite Engine des Apache lösen...
     
  7. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Man kann auch einfach ein anständiges Framework wie Cake, CodeIgniter oder Symfony nehmen. Dann hat man die ganzen Probleme erst gar nicht.
     
  8. mokoi

    mokoi Braeburn

    Dabei seit:
    20.06.08
    Beiträge:
    45
    Man kann auch mit Spatzen auf Kanonen schiessen. Hängt wohl von den konkreten Anforderungen ab - oftmals gibt es ja auch CMS die dem gewünschten Funtionsumfang nahe kommen. Ich arbeite eigentlich nie mit Frameworks (bei neuen Projekten) sondern mit eigenen Blueprints oder wenns passt Drupal oder WP(mu) mit eigenen modules.

    Ich denke mal, dass das jetzt am Ausgangspost vorbei geht. Bei kleineren Seiten spricht ja auch nichts gegen was "handgestricktes" und GET (ob mit oder ohne mod_rewrite) ist per se nicht unsicherer als andere Möglichkeiten ;)
     
  9. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Was heißt "mit Kanonen auf Spatzen schießen"? Es gibt Frameworks für jede Anforderung: Von sehr schlanken, für kleine Sites und Apps ausgelegte FWs hin zu Enterprise-grade FWs gibt es doch alles.

    Und selbst bei einer kleinen Site ist es nicht sinnvoll, das Rad neu zu erfinden, wenn man auf ein vorgefertigtes Framework zurückgreifen kann. Durch Frameworks kann man sich eine Menge Arbeit und Nerven sparen. Stichwort: RAD.
     

Diese Seite empfehlen