Kann man diese if-else-include-Abfrage optimieren?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 3DMax
    antwortet
    Original geschrieben von Truncate
    Nehme die Array-Variante...
    ich hätte beide genommen

    Einen Kommentar schreiben:


  • Truncate
    antwortet
    Gut, danke euch beiden!

    Nehme die Array-Variante... weil ich muss die restlichen angehängten Parameter sowieso schon mittels (langsamer) RegEx checken.

    Einen Kommentar schreiben:


  • 3DMax
    antwortet
    Re: Re: Re: Kann man diese if-else-include-Abfrage optimieren?

    ja, die idee mit dem regex ist gut.

    Original geschrieben von Truncate
    Da müßte dann obige RegEx auch ausreichen oder? Ich mein Punkte sind ja dann nicht mehr erlaubt...
    muss ja nicht unbedingt ein punkt vorkommen:
    Code:
    ../../../etc/passwd%00
    erschlägst du aber trotzdem damit.

    pregos vorschlag mit der whitelist ist sehr zu empfehlen. also dateien explizit zu erlauben, anstatt versuchen, die parameter zu bereinigen.

    Einen Kommentar schreiben:


  • prego
    antwortet
    PHP-Code:

    $valid_sites 
    = array('home','impressum','foo');

    if(isset(
    $_GET['go']) AND in_array($_GET['go'], $valid_sites)){
      include(
    '../includes/inc.'.$_GET['go'].'php');
    }else{
      include(
    '../includes/inc.home.php');

    Ma so als Anstoß.

    file_exists kann übrigens nicht die Existenz von entfernten Dateien prüfen.

    Von daher müsste man also um was einzuschleusen auf der selben Kiste sein - bei Shared-Hosting aber möglich.


    Anmerkung: Diese Funktion kann nicht mit entfernten Dateien arbeiten, da der Zugriff auf die Datei, die bearbeitet werden soll, über das Dateisystem des Servers möglich sein muss.
    aus: http://de3.php.net/file_exists

    Einen Kommentar schreiben:


  • Truncate
    antwortet
    Re: Re: Kann man diese if-else-include-Abfrage optimieren?

    Original geschrieben von 3DMax 1. relative pfadangaben sind erlaubt, ala: ../../
    Gut, das heißt also ich muss $_GET['go'] mittels RegEx überprüfen,
    ob nur Buchstaben und Zahlen darin vorkomme, richtig?

    Original geschrieben von 3DMax 2. ist magic_quotes_gpc aus, kann man durch nullbytes sogar dein ".php" austricksen und jede beliebige datei includen
    Da müßte dann obige RegEx auch ausreichen oder? Ich mein Punkte sind ja dann nicht mehr erlaubt...

    Einen Kommentar schreiben:


  • 3DMax
    antwortet
    Re: Kann man diese if-else-include-Abfrage optimieren?

    Original geschrieben von Truncate
    Ist auf Nummer sicher aufgebaut,
    also nicht bloß include($_GET['go']); und fertig...
    so so, auf nummer sicher.
    1. relative pfadangaben sind erlaubt, ala: ../../
    2. ist magic_quotes_gpc aus, kann man durch nullbytes sogar dein ".php" austricksen und jede beliebige datei includen

    Einen Kommentar schreiben:


  • Abraxax
    antwortet
    Re: Kann man diese if-else-include-Abfrage optimieren?

    Original geschrieben von Truncate
    Das wäre schon wieder unsinnig oder:
    wieso?

    Einen Kommentar schreiben:


  • Truncate
    hat ein Thema erstellt Kann man diese if-else-include-Abfrage optimieren?.

    Kann man diese if-else-include-Abfrage optimieren?

    Hallo,

    kann man das ev. kürzer machen? Ist auf Nummer sicher aufgebaut,
    also nicht bloß include($_GET['go']); und fertig...

    PHP-Code:
    if(isset($_GET['go']))

    {    if(
    file_exists("php/".$_GET['go'].".php"))
        
        {
            
            include(
    "php/".$_GET['go'].".php");
            
        }

        else
        
        {

        include(
    "php/home.php");
        
        }

    }

    else

    {include(
    "php/home.php");} 
    Das wäre schon wieder unsinnig oder:

    PHP-Code:
    if(isset($_GET['go']) && if(file_exists("php/".$_GET['go'].".php")) 
Lädt...
X