kostenloser Webspace werbefrei: lima-city


isset var

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    bilo

    bilo hat kostenlosen Webspace.

    Hi,

    ich benutze GET um Pages anzuzeigen beispiel ?site=main.

    <?
    function naviextern() {
    $p = $_GET["p"];
    if(!isset($p)) {
    $p = "start";
    }
    switch ($p) {
    #case "": include (""); break;
    case "start"          : include ("inc/content/start.php");          break;
    case "main"           : include ("inc/content/main.php");           break;
    case "reg"            : include ("inc/content/reg.php");            break;
    }
    }
    ?>


    ich hab mal in index.php echo $p gemacht um zu sehen ob er wirklich die variable setzt. Tut es auch. Aber mir ist in Browser aufgefallen das man ?p=<b>test<b> machen kann.. und dann wird echo acuh fett "test" angezeigt. Ich weiß net vllt ist das sogar ne Sicherheitslücke ^^ SQL Injection & co.

    Wie könnte ich denn abfragen ob, $p gesetzt ist.. und das $p nur start, main und reg als variable haben darf?

    Ich mein es soll einfach beispiel bei ?$p=asd gucken ob ob asd unter switch steht.. wenn es nicht existiert, dann soll es Fehlermeldung wie echo "die seite existiert nicht" ausgeben..




    Beitrag geändert: 3.12.2008 18:31:18 von bilo
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. familie-schiffer

    Kostenloser Webspace von familie-schiffer, auf Homepage erstellen warten

    familie-schiffer hat kostenlosen Webspace.

    <?
    function naviextern() {
    $p = $_GET["p"];
    if(empty($p)) {
    $p = "start";
    }
    switch ($p) {
    case "start"          : include ("inc/content/start.php");          break;
    case "main"           : include ("inc/content/main.php");           break;
    case "reg"            : include ("inc/content/reg.php");            break;
    default: die("Du Hacker!")
    }
    }
    ?>



    Der Default Zweig wird genutzt, wenn keines der Auswahlmöglichkeiten stimmt.

    Mit Empty kannst du überprüfen, ob eine Variable NICHT existiert, NULL, "" oder 0 enthält. (Also nur das entsprechende enthält ;) )


    Beitrag geändert: 3.12.2008 18:36:01 von familie-schiffer
  4. Autor dieses Themas

    bilo

    bilo hat kostenlosen Webspace.

    Danke! Aber du hast ";" vergessen in Zeile 11 :P
    Aber aber ein Problem hab ich noch. In index ganz oben hab ich auch
    $p = $_GET["p"];
    if(empty($p)) {
    $p = "start";
    }
    echo $p;

    Hab ich gemacht. Aber das überprüft ja immernoch nicht das er nur die variablen in switch haben darf und nicht sonst was.
    Schon gut. Mir ist unset() nicht eingefallen. Jetzt alles cool :P
    <?
    function naviextern() {
    $p = $_GET["p"];
    if(empty($p)) {
    $p = "start";
    }
    switch ($p) {
    case "start"          : include ("inc/content/start.php");          break;
    case "main"           : include ("inc/content/main.php");           break;
    case "reg"            : include ("inc/content/reg.php");            break;
    default: unset($p);die("Du Hacker!");
    }
    }
    ?>



    Beitrag geändert: 3.12.2008 19:16:00 von bilo
  5. familie-schiffer

    Kostenloser Webspace von familie-schiffer, auf Homepage erstellen warten

    familie-schiffer hat kostenlosen Webspace.

    Alles im Default Zweig wird ausgeführt, wenn keine der Bedingungen klappt.
    Ich halte es eigetlich für besser, einfach
    default: include ("inc/content/start.php");

    zu schreiben, damit Hacker garnichts bemerken :P
  6. Autor dieses Themas

    bilo

    bilo hat kostenlosen Webspace.

    Och ich hab da jetzt stehen die Seite existiert nicht ^^
    Naja ich wollte unbedingt das die Variable bei fehlschlag verschwindet. Ich will mich daran gewöhnen damit man nachher schwer ist Sicherheitslücken findet. Was nicht da ist wird auch schwer gefunden zu werden:P

    Ich hab beispiel 2 pages.. einer hat so mächtig viele .php wo man sql injection nicht führen kann.. es ist schon 3 jahre her als ich das gemacht habe aber ich weiß auch nicht was ich da gemacht habe damals. Ich kannte damals die SQL-Injection nicht mal. Aber bei den neueren page mit ca. 5 .php Dateien.. kommt Fehlermeldungen.. somit erkennt man, dass es Sicherheitslücken hat :S

    Gibs eigentlich ne Möglichkeit ohne javascript weiterleitung zu machen? ich würd besser finden statt zu includen eher weiterleitung zu Seite ?p=start hat.
  7. familie-schiffer

    Kostenloser Webspace von familie-schiffer, auf Homepage erstellen warten

    familie-schiffer hat kostenlosen Webspace.

    Eine Möglichkeit gibt es:
    Vor dem HTMLCode, vor allem einen PHPCode einfügen:
    header("Location: http://bilo.lima-city.de/bla.php?p=start");


    URL musst du anpassen.

    Grüße Marius
  8. oder du machst das ganze so:
    <?php 
    // Die Variable inc_array wird als Array() Deklariert
    $inc_array = array();
    // Diese Funktion &#65533;ffnet einen Ordner
    $inc_dir = opendir ("./seiten");
    // Der Ordner wird als Array eingelesen
    while ($inc = readdir ($inc_dir)){
        if($inc != "." && $inc != "..") {
            // Es werden alle .inc.php endungen entfernt und anslie&#65533;end als Array zusammengef&#65533;gt
            $short_inc = str_replace(".inc.php", "", $inc);
            array_push ($inc_array, $short_inc);
        }
    }
    // Das Verzeichnis wird wieder geschlossen
    closedir($inc_dir);
    
    // Es wird die aus der URL die Variale von "?seite=" ausgelesen.
    if (isset($_GET[seite]) && in_array($_GET[seite], $inc_array)){
    // Jetzt wird die Variable wieder mit dem Ordner sowie der Endung best&#65533;ckt
        include("./seiten/".$_GET[seite].".inc.php");
    }else{
        // Sollte diese Datei nicht Existieren, wird diese Seite aufgerufen
        include("./seiten/start.inc.php");
    }
    ?>

    in diesem fall, werden ersteinmal nur dateien eingelesen, die sich in dem array (also dem jeweiligen ordner befinden) und zusätzlich die endung .inc.php haben ;)

    die ganzen $_GET sachen hab ich noch zusätzlich mit ner sicherheits funktion belegt, was alles, was wie ein code ausschaut rausfiltert ;)
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!