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

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

  • 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")) 

  • #2
    Re: Kann man diese if-else-include-Abfrage optimieren?

    Original geschrieben von Truncate
    Das wäre schon wieder unsinnig oder:
    wieso?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      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

      Kommentar


      • #4
        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...

        Kommentar


        • #5
          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

          Kommentar


          • #6
            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.

            Kommentar


            • #7
              Gut, danke euch beiden!

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

              Kommentar


              • #8
                Original geschrieben von Truncate
                Nehme die Array-Variante...
                ich hätte beide genommen

                Kommentar

                Lädt...
                X