Ergebnis 1 bis 8 von 8

Thema: [PHP] Sicherheit beim Verzeichnisse durchsuchen

  1. #1

    [PHP] Sicherheit beim Verzeichnisse durchsuchen

    Ich benötige ein Skript, mit dem man einen Ordner unterhalb einer bestimmten Verzeichnisstruktur (collections) auswählt.

    Dabei entsteht eine Sicherheitsfrage. Das Verzeichnis wählt man über Links aus. Dabei wird die Ordner-Adresse relativ zu "collections" per GET übergeben.

    Wie kann ich aber dabei sichergehen, dass sich da niemand unterhalb von collections scrollt, zb. per
    Code:
    ../
    oder
    Code:
    collection1/../../
    ?

  2. #2
    Zitat Zitat von Bluescreen Beitrag anzeigen
    Ich benötige ein Skript, mit dem man einen Ordner unterhalb einer bestimmten Verzeichnisstruktur (collections) auswählt.

    Dabei entsteht eine Sicherheitsfrage. Das Verzeichnis wählt man über Links aus. Dabei wird die Ordner-Adresse relativ zu "collections" per GET übergeben.

    Wie kann ich aber dabei sichergehen, dass sich da niemand unterhalb von collections scrollt, zb. per
    Code:
    ../
    oder
    Code:
    collection1/../../
    ?
    Du könntest zum Beispiel direkt nach ".." als Verzeichnis suchen (die entsprechende RegExp sollte nicht allzu schwer sein) oder die Pfadangabe erst durch realpath() schicken und dann auf "/path/to/collections" als Pfadanfang prüfen.

  3. #3
    Ich würde ersteres empfehlen. Das hat den Vorteil, dass es auch dann funktioniert, wenn das Script mal irgendwo anders auf der Festplatte liegt. Allerdings solltest du dann auch noch überprüfen, dass der Pfad nicht mit "/" anfängt.

  4. #4
    /Fyx: Bloedsinn. Du kannst ja auch die aktuelle Position des Scripts heraus finden. Zwei mal realpath und einen cmp. Das geht aufjedenfall schneller, als jede regexp.

  5. #5
    Zitat Zitat von Mog Beitrag anzeigen
    /Fyx: Bloedsinn. Du kannst ja auch die aktuelle Position des Scripts heraus finden. Zwei mal realpath und einen cmp. Das geht aufjedenfall schneller, als jede regexp.
    Geht natürlich. Nur dass du für meinen Ansatz auch keine Regexps brauchst

  6. #6
    Ich würde es mit basename() machen, ehrlich gesagt. Dann noch einmal gucken, dass das Ergebnis nicht .. ist und fertig. Ob das performanter als die realpath()-Methode ist, weiß ich nicht, aber logisch und leicht nachvollziehbar isses allemal.

  7. #7
    Zitat Zitat von drunken monkey Beitrag anzeigen
    Du könntest zum Beispiel direkt nach ".." als Verzeichnis suchen (die entsprechende RegExp sollte nicht allzu schwer sein) oder die Pfadangabe erst durch realpath() schicken und dann auf "/path/to/collections" als Pfadanfang prüfen.
    Danke, genau das hab ich gebraucht!

  8. #8
    Ich würde einfach mit einem stinknormalen Suchen&Ersetzen alle "../" mit "" ersetzen (und vorher natürlich alle "\" durch "/"). Dann noch "./" vor den Pfad klatschen und doppelte Slashes entfernen und der Pfad ist sauber

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •