Navigation, Include = Sicherheitslücke?

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

  • Navigation, Include = Sicherheitslücke?

    hallo leute,

    ich bin in der php gemeinde neu und habe hier erst mal tagelang gelesen und gelesen.

    eines ist mir aufgefallen, da ich mich z.zt. mit der navigation beschäftige.

    es ist immer wieder die rede von einer "sicherheitslücke" wenn man eine navigation mit switch und include macht.

    beispiel:

    PHP-Code:
    <a href="index.php?go=eltern">Eltern</a
    und die switch anweisung ungefähr so aussieht:

    PHP-Code:
    <?php
    switch($go) {

    case
    "home":
    include(
    "home.htm");
    break;

    case 
    "eltern":
    include(
    "eltern.htm");
    break;

    default: 
    include(
    "home.htm");
    }
    ?>
    kann mir jemand sagen, was daß für eine sicherheitslücke ist, und wie ich sie schließen kann?


    EDIT:
    php.tags by Abraxax
    Zuletzt geändert von Abraxax; 02.08.2003, 10:14.

  • #2
    naja. von einer sicherheitslücke kann man in deinem fall nicht unbedingt sprechen, da du die zu includierenden dateien im script selber definiertst.

    problematisch wird es, wenn du den namen der zu includierenden datei direkt als parameter an das script übergibst. hier könnte nämlich jemand auch was anderes includieren lassen.

    so wie du das gemacht hast, ist das schon ok.

    ich würde allerdings $_GET['go'] zum ansprechen einer GET variable nehmen. so kannst du auch gewährleisten, dass das script auf einem system funktioniert, welches die register_globals in der php.ini abgeschaltet hat.

    ausserdem entspricht das der neuen schreibweise.

    zum anderen solltest du immer mit isset() abprüfen, ob eine variable existiert. das macht zwar mehr aufwand, ist aber wesentlich sauberer. und wenn du das von anfang an machst, fällt es dir auf dauer auch nicht mehr schwer dich daran zu gewöhnen.

    wenn du z.b. die letzten beiden punkte nicht beachtest, so würden deine script bei mir gar nicht erst lauffähig sein. ich habe die register_globals ausgeschaltet und auch alle notices sowie errors aktiviert.

    PHP-Code:
    <?php

        
    if (isset($_GET['go']))
        {
            switch(
    $_GET['go'])
            {

                case 
    'home':    include('home.htm');
                                break;

                case 
    'eltern':  include('eltern.htm');
                                break;

                default:        include(
    'home.htm');
            }
        }
        else
        {
            include(
    'home.htm');
        }

    ?>
    ps. verwende bitte im forum auch immer die php.tags. thx.
    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
      ok, ich glaube ich habe verstanden, wie es gemeint ist.
      danke nochmals.

      doch, wie kann ich hier im forum die php tags aktivieren?
      also, wenn ich ein php script darstellen ´möchte?

      einfach
      PHP-Code:
      PHP Code 
      und mit dem umgeändertem code habe ich eigentlich auch das wesentliche verstanden.

      danke dir nochmals

      -------------------

      ok, wie ich sehe habe ich es mit den php tags verstanden.
      vielen dank nochmals
      Zuletzt geändert von erzincan24; 02.08.2003, 19:20.

      Kommentar

      Lädt...
      X