Klaus: Sicherheit beim Auslesen der $_GET-Variable

Hallo zusammen,

ich möchte per PHP aus der $_GET-Variable einen Dateipfad (welchen ich auf "meinem" Server dann besuche) auslesen.
Ist insofern kein Problem.

Nur da ich weiß, dass dann sicherheitstechnisch alle Türen offen stehen, möchte ich wissen, was ich beachten muss, um einen Missbrauch zu vermeiden.

Meine erste Idee, wäre die Methode htmlentities(). Wie geht's dann weiter?

Danke schonmal.

Viele Grüße
Klaus

  1. Nur da ich weiß, dass dann sicherheitstechnisch alle Türen offen stehen, möchte ich wissen, was ich beachten muss, um einen Missbrauch zu vermeiden.

    http://de3.php.net/manual/de/function.is-dir.php bezw.
    http://de3.php.net/manual/de/function.file-exists.php
    Man könnte noch prüfen, daß die Variable nur die Zeichen enthält, die in einer Pfadangabe erlaubt sind.

    ~JJ

    1. Hallo!
      Danke für die Antwort.

      Man könnte noch prüfen, daß die Variable nur die Zeichen enthält, die in einer Pfadangabe erlaubt sind.

      Sorry, falls das jetzt total unwissend rüberkommt, aber: Welche Zeichen sind denn nicht erlaubt?

      Viele Grüße
      Klaus

      1. Hallo Klaus,

        Welche Zeichen sind denn nicht erlaubt?

        Müsstest Du, wenn Du die Verzeichnisse erstellst, dies nicht selbst bereits definiert haben?

        Mit freundlichem Gruß
        Micha

  2. Mahlzeit Klaus,

    Meine erste Idee, wäre die Methode htmlentities(). Wie geht's dann weiter?

    Wieso htmlentities()? Willst Du den Inhalt der Variablen im HTML-Kontext ausgeben? Nein? Dann wäre die Benutzung blödsinnig.

    Überprüfe lieber, ob Zeichen vorkommen, die in einer Pfadangabe nichts zu suchen haben, überprüfe, ob der Pfad irgendwo hinführt, wo er nicht hinführen darf/sollte usw. ...

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo!
      Danke für die Antwort!

      Wieso htmlentities()? Willst Du den Inhalt der Variablen im HTML-Kontext ausgeben? Nein? Dann wäre die Benutzung blödsinnig.

      Da hast du sicher recht.

      Überprüfe lieber, ob Zeichen vorkommen, die in einer Pfadangabe nichts zu suchen haben, überprüfe, ob der Pfad irgendwo hinführt, wo er nicht hinführen darf/sollte usw. ...

      Hm... Welche Zeichen meinst du und wie mach ich das?

      Viele Grüße
      Klaus

      1. Mahlzeit Klaus,

        Überprüfe lieber, ob Zeichen vorkommen, die in einer Pfadangabe nichts zu suchen haben, überprüfe, ob der Pfad irgendwo hinführt, wo er nicht hinführen darf/sollte usw. ...
        Hm... Welche Zeichen meinst du und wie mach ich das?

        Schau nach, was beim Betriebssystem, auf dem Dein Webserver läuft, erlaubt ist. Normalerweise sind alphanumerische Zeichen, Minus, Unterstrich, Punkt und noch ein paar andere Ausnahmen erlaubt, Schrägstriche (je nach System unterschiedliche Neigung) und andere hingegen nicht.

        Du überprüfst einfach, ob in dem übergebenen String die Zeichen vorkommen, die nicht erlaubt sind. Bzw. umgekehrt, Du überprüfst, ob dort nur Zeichen vorkommen, die erlaubt sind. Mit regulären Ausdrücken und einem geeigneten Suchmuster sollte das relativ einfach möglich sein.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|