Fehlerseite

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

  • Fehlerseite

    hi all

    ich hab mal wieder eine frage. hier erstmal mein code:
    PHP-Code:
    <?php
    include "header.php";

    if(isset(
    $_GET['action'])) {

    include 
    $_GET['action'].".php";

    }

    else {

    include 
    "start.php";

    }

    include 
    "footer.php";

    ?>
    wie ihr seht wird bei dieser index datei immer 3 seite includet. wenn ich jetzt zp den link, index.php&action=downloads öffne, wird die datei downloads.php includet. wenn man jetzt aber z.b. eine seite nicht existiert, kommt natürlich eine fehlermeldung. kann ich eine fehlermeldungs seite machen wenn eine datei nicht gefunden/includet werden kann?

  • #2
    Re: Fehlerseite

    Original geschrieben von PHPbeginner
    wenn man jetzt aber z.b. eine seite nicht existiert, kommt natürlich eine fehlermeldung. kann ich eine fehlermeldungs seite machen wenn eine datei nicht gefunden/includet werden kann?
    nein, ändere stattdessen dein konzept, und zwar dringend!

    bei deinem jetzigen code kann ich als wert für action so gut wie alles übergeben, ich kann z.b. /verzeichnisname/.htpasswd angeben, und dann wird statt irgendeinem script eine datei mit passwörtern eingebunden, die ich dann im quelltext lesen kann.
    oder, schlimmstenfalls, kann ich sogar php-code von extern einbinden.


    überlege dir etwas zur absicherung, z.b. dass du die namen aller "erlaubten" dateien in einem array ablegst.
    dann kannst du auch sehr leicht prüfen, ob der übergebene wert in deinem array vorhanden ist, und wenn nicht, eine eigene fehlermeldung ausgeben.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      also die .htaccess dateien kann man ja nicht anschauen da meins cript automatisch hinten noch ".php" anhängt. wie genau soll ich denn das mit dem array machen? gibts keine anderen möglichkeiten?

      Kommentar


      • #4
        Original geschrieben von PHPbeginner
        also die .htaccess dateien kann man ja nicht anschauen da meins cript automatisch hinten noch ".php" anhängt.
        trotzdem kann man damit u.U. anderen mist machen, z.b. php-code einschleusen.

        wie genau soll ich denn das mit dem array machen?
        was hast du an "lege die erlaubten dateinamen in einem array ab, und prüfe dann vor dem include, ob der übergebene wert im array vorkommt" nicht verstanden?

        gibts keine anderen möglichkeiten?
        denk dir eine aus, wenn dir danach ist.



        p.s.: reparier doch mal deine sig, das bild ist nicht vorhanden.
        (nimm's am besten ganz raus.)
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          ich habs mal mit diesem code hier versucht den ich bei den code-schnipsel gefunden habe:

          PHP-Code:
          if(preg_match("#..#",$HTTP_GET_VARS[action]) // alles was auf höhere Verzeichnisse zugreift

                                 
          || substr($HTTP_GET_VARS['action'],0,1)=="/"   // alles was auf doc-root zugreift

                                 
          || strpos($HTTP_GET_VARS['action'],"://")      // alles was Scripte von anderen Servern includet

                                

                                 
          || !$HTTP_GET_VARS['action']                   // übergebene Seite ist leer

                                 
          || !file_exists($HTTP_GET_VARS['action'])      // Datei gibt es nicht

                                 
          )

                                     {

                                     
          $HTTP_GET_VARS['action']="fehlerseite";

                                     }

                                 include_once(
          $HTTP_GET_VARS['action'].".php"); 
          nur wird bei mir jetzt immer die fehlerseite includet auch wenn die variable "action" gesetzt und die datei vorhanden ist.

          Kommentar


          • #6
            mal logisch nachdenken bitte!
            (und fremden code, den man einsetzt, erstmal zu verstehen versuchen ...)

            PHP-Code:
            || !file_exists($HTTP_GET_VARS['action'])      // Datei gibt es nicht 
            dies überprüft, ob es eine datei mit dem namen auf der platte gibt, der derzeit in $HTTP_GET_VARS['action'] steht.

            an dieser stelle hast du die endung ".php" aber noch gar nicht angehängt.

            wenn in $HTTP_GET_VARS['action'] also "seite" steht, findet er damit die datei nicht, selbst wenn "seite.php" existiert.


            btw: wechsle jetzt besser nicht wieder auf die veraltete $HTTP_GET_VARS-schreibweise, wenn du vorher $_GET benutzt hast.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              naja okay aber dann müsste es aber mit "index.php?action=seite.php" funktionieren. tut es aber nicht

              Kommentar


              • #8
                Original geschrieben von PHPbeginner
                naja okay aber dann müsste es aber mit "index.php?action=seite.php" funktionieren. tut es aber nicht
                hast du auch dran gedacht, in dem fall nicht mehr ".php" beim includen dranzuhängen ...?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar

                Lädt...
                X