../ blockieren PHP

  • Hallo liebe Community,


    ich habe ein Problem auf meiner Webseite. Ich habe die Seiten im Ordner "pages" gespeichert. Sie haben die Endung .php. Problem ist, andere können in die URL schreiben: "index.php?page=../index" und bekommen den ganzen Code der index.
    Ich möchte die Seiten aber mit der Endung .php lassen. Wie kann ich das "../" in der URL blockieren?


    MfG DD_

  • Nur um sicher zu gehen, kann jemand auch was anderes schreiben außer "../" um den Index code zu bekommen?


    PHP Code nicht, aber den HTML Code, den dein Browser braucht um die Seite anzuzeigen, kann auch jeder Benutzer sehen.


    Beispiel:
    Der Benutzer sieht nicht wenn du eine Session startest (im Code sieht er es nicht. War vielleicht kein gutes Beispiel xD )


    <div class="main"><h3>Hallo</h3></div> kann er aber sehen

  • Ich habe jetzt das strpos eingefügt, man kann aber immernoch auf die datei zugreifen.


    In dem Beispiel kann man die "test.html" immer noch öffnen

  • Reguläre Ausdrücke verwenden und nicht so einen Quatsch.


    PHP
    <?php
     if (preg_match('/^[a-zA-Z0-9]+$/', $der_zu_ueberpruefende_string)) {
     	echo 'valid';
     }
     else {
     	echo 'invalid';
     }
    ?>


    Keine Ahnung was Du alles erlauben willst, mach am besten mal ein Beispiel.

  • Noch besser ist ne Whitelist oder direkt ein Routing System.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Funktioniert jetzt. Ich habe bloß ein Probem. Ich kann die PHP Sachen auf der geladenen Seite nicht benuten. Hier der ganze functions code:


    Wenn ich auf der Seite beispielweise das schreibe:

    Code
    echo("<script>alert('test');</script>");


    wird auf der Seite "alert('test');" geschrieben

  • mach statt fopen /fread nen include... dann führt er es auch aus

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Da stimme ich @Developer. Du machst es dir unnötig schwer.
    Ich verwende für das "Page-System" immer nur diese 2 Zeilen, und hatte nie wirklich Probleme gehabt.


    PHP
    $openPage = "pages/".$_GET['p'].".page.php";
    include(file_exists($openPage) ? $openPage : "pages/404.php");