tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
735
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Wipeout
    Wipeout Wipeout ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Ort
    Gladbeck
    Beiträge
    183
    Moin, ich benutze folgendes Script zum includen meiner Scripte, bzw der html seiten.
    Da ich einfach seiten hochladen möchte die dann automatisch angezeigt werden ist die sache so ansich schon super.
    Meine Frage ist nun wie sicher ist dieses Script und in wie weit kann man es eventuell noch sicherer machen ?

    PHP-Code:
    <?php
                    
    if(empty($_GET['seite']))
                    
    $_GET['seite'] = "news/index";
                    if(
    file_exists("html/".$_GET['seite'].".html")) {
                    include(
    "html/".$_GET['seite'].".html");
                    } else
                    if(
    file_exists("php/".$_GET['seite'].".php")) {
                    include(
    "php/".$_GET['seite'].".php");
                    } else {
                    include(
    "html/error.html");
                    }
                    
    ?>
    Switch anweisungen kommen nicht in frage, da ich wie oben schon gesagt habe, einfach ne html seite z.b. hochladen möchte und diese dann sofort benutzen kann.
     
    Wir hoffen immer auf den nächsten Tag, wahrscheinlich erhofft sich der nächste Tag einiges von uns. - Ernst R. Hauschka (dt. Essayist)

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Wie wäre es mit automatisch auslesen und so eine Whitelist erzeugen?

    PHP-Code:
    <?php

    $dir 
    './sec/';

    foreach (
    array_merge(glob($dir.'*.php'), glob($dir.'*.html')) as $file)
    {
      
    $files[] = $file;
    }

    if(
    in_array($dir.$_GET['seite'].'.html'$files))
    {
      include(
    $dir.$_GET['seite'].'.html');
    }
    else
    {
      print 
    'Fehler. Sektion nicht vorhanden.';
    }
    ?>
    Wobei else bei dir natürlich der standard Fall sein sollte.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Was passiert wenn $_GET['seite'] den Wert „../index“ enthält?
     
    Markus Wulftange

  4. #4
    Avatar von Wipeout
    Wipeout Wipeout ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Ort
    Gladbeck
    Beiträge
    183
    Zitat Zitat von Gumbo Beitrag anzeigen
    Was passiert wenn $_GET['seite'] den Wert „../index“ enthält?
    hmmm, dann wird die index.html aufgerufen die im hauptverzeichniss liegt wenn ich das richtig gesehen habe.
     
    Wir hoffen immer auf den nächsten Tag, wahrscheinlich erhofft sich der nächste Tag einiges von uns. - Ernst R. Hauschka (dt. Essayist)

  5. #5
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Und ist das auch gewollt oder zulässig?
     
    Markus Wulftange

  6. #6
    Avatar von Wipeout
    Wipeout Wipeout ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Ort
    Gladbeck
    Beiträge
    183
    Zitat Zitat von Felix Jacobi Beitrag anzeigen
    Wie wäre es mit automatisch auslesen und so eine Whitelist erzeugen?

    PHP-Code:
    <?php

    $dir 
    './sec/';

    foreach (
    array_merge(glob($dir.'*.php'), glob($dir.'*.html')) as $file)
    {
      
    $files[] = $file;
    }

    if(
    in_array($dir.$_GET['seite'].'.html'$files))
    {
      include(
    $dir.$_GET['seite'].'.html');
    }
    else
    {
      print 
    'Fehler. Sektion nicht vorhanden.';
    }
    ?>
    Wobei else bei dir natürlich der standard Fall sein sollte.

    Und wie sieht das aus wenn ich im Verzeichnis php z.b noch ein unterverzeichniss habe. weil das hab ich und bei den dateien kriege ich auch dauernd gesagt das die sektion nicht vorhanden sei.

    @Gumbo
    Ne nicht wirklich.
    Geändert von Wipeout (14.01.08 um 00:21 Uhr)
     
    Wir hoffen immer auf den nächsten Tag, wahrscheinlich erhofft sich der nächste Tag einiges von uns. - Ernst R. Hauschka (dt. Essayist)

  7. #7
    Avatar von Wipeout
    Wipeout Wipeout ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Ort
    Gladbeck
    Beiträge
    183
    Hab das Script jetzt mal so umgeschrieben, damit er mir am anfang meine Hauptseite auch anzeigt, aber irgendwie klappt das nicht weil diese Datei halt in einem Unterverzeichniss von php liegt.

    PHP-Code:
    if(empty($_GET['seite']))
    {
        
    $_GET['seite'] = "news/index";
    }
    foreach (
    array_merge(glob("php/".'*.php'), glob("html/".'*.html')) as $file)
    {
      
    $files[] = $file;
    }
    if(
    in_array("html/".$_GET['seite'].'.html'$files))
    {
      include(
    "html/".$_GET['seite'].'.html');
    }
    else
    {
        if(
    in_array("php/".$_GET['seite'].'.php'$files))
    {
      include(
    "php/".$_GET['seite'].'.php');
    }
    else
    {

      print 
    'Fehler. Sektion nicht vorhanden.';
    }

    Geändert von Wipeout (14.01.08 um 00:34 Uhr)
     
    Wir hoffen immer auf den nächsten Tag, wahrscheinlich erhofft sich der nächste Tag einiges von uns. - Ernst R. Hauschka (dt. Essayist)

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Mach einfach Folgendes:
    PHP-Code:
    $error false;
    if( empty(
    $_GET['seite']) ) {
        
    $_GET['seite'] = 'news/index';
    }
    if( 
    strpos($_GET['seite'], '..') !== false ) {
        
    $error true;
    }
    if( !
    $error && ($absPath realpath('html/'.$_GET['seite'].'.html')) !== false ) {
        
    readfile($absPath);
    } else if( !
    $error && ($absPath realpath('php/'.$_GET['seite'].'.php')) !== false ) {
        include 
    $absPath;
    } else {
        
    readfile('html/error.html');

     
    Markus Wulftange

  9. #9
    Avatar von Wipeout
    Wipeout Wipeout ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Ort
    Gladbeck
    Beiträge
    183
    Zitat Zitat von Gumbo Beitrag anzeigen
    Mach einfach Folgendes:
    PHP-Code:
    $error false;
    if( empty(
    $_GET['seite']) ) {
        
    $_GET['seite'] = 'news/index';
    }
    if( 
    strpos($_GET['seite'], '..') !== false ) {
        
    $error true;
    }
    if( !
    $error && ($absPath realpath('html/'.$_GET['seite'].'.html')) !== false ) {
        
    readfile($absPath);
    } else if( !
    $error && ($absPath realpath('php/'.$_GET['seite'].'.php')) !== false ) {
        include 
    $absPath;
    } else {
        
    readfile('html/error.html');

    Cool Danke, nun muss ich mich mal durch das Script durcharbeiten da sind ein paar sachen bei die ich noch nie gesehen habe
     
    Wir hoffen immer auf den nächsten Tag, wahrscheinlich erhofft sich der nächste Tag einiges von uns. - Ernst R. Hauschka (dt. Essayist)

Ähnliche Themen

  1. Ist das sicher?
    Von slaughter89 im Forum PHP
    Antworten: 11
    Letzter Beitrag: 03.01.08, 17:13
  2. Antworten: 6
    Letzter Beitrag: 05.07.06, 17:57
  3. Php Script sicher machen...
    Von freakcx im Forum PHP
    Antworten: 6
    Letzter Beitrag: 22.06.06, 22:41
  4. Wie mache ich ein Upload Script sicher
    Von PhoenixDH im Forum PHP
    Antworten: 20
    Letzter Beitrag: 26.09.04, 21:09
  5. Download Script Sicher?
    Von KristophS im Forum PHP
    Antworten: 6
    Letzter Beitrag: 16.06.04, 01:57