Samuel Vogel: regular expression

Hallo Forum,

Ich bin grad dabei mein script etwas abzusichern. Es wird ein Pfadangabe in als Variable uebergeben und dies laesst sich ja leicht faelschen/veraendern. Da PHP nun wenn man anstatt ./bla/test ./../test angibt einfach ins hoeherliegende Verzeichnis springt, ist dies eine Luecke.

Man koennte dies verhindern indem man in der Zeichenketten per Regular Expression nach dem vorkommen von "/.." sucht, gleichzeitig aber auch nach "/........" und diese durch einen einfachen / ersetzt.

Da ich leider keine Ahnung von Regular Expressions habe und mehrere Versuche es mir Anzueignen fehlgeschlagen sind, frage ich euch ob jemand mir die passende Expression liefern koennte...

Danke schonmal!!

so long,
Samy

  1. Hellihello Samy,

    zum einen frage ich mich, welche Lücke Du damit stopfen willst und ob das mit regexp gelöst werden sollte. Zum anderen solltest Du wenigstens einmal auf eine regexp-seite geschaut haben...;

    frankx

  2. gudn tach!

    Es wird ein Pfadangabe in als Variable uebergeben

    die erste frage, die sich hier stellt: muss das sein? sind es so viele versch. pfade? oder muss das auf diese weise dynamisch gehalten werden?
    eine alternative waere, die pfade mit IDs zu versehen, und nur die IDs als parameter rumzuschieben.

    Da PHP nun wenn man anstatt ./bla/test ./../test angibt einfach ins hoeherliegende Verzeichnis springt, ist dies eine Luecke.

    wenn du nur verhindern willst, dass zwei punkte hintereinander - eingeklammert von slashes - im pfad auftauchen, dann suche eben einfach nach '/../', z.b. mittels strpos.

    Man koennte dies verhindern indem man in der Zeichenketten per Regular Expression nach dem vorkommen von "/.." sucht, gleichzeitig aber auch nach "/........" und diese durch einen einfachen / ersetzt.

    was ist so schlimm an '/........'?

    Da ich leider keine Ahnung von Regular Expressions habe und mehrere Versuche es mir Anzueignen fehlgeschlagen sind, frage ich euch ob jemand mir die passende Expression liefern koennte...

    punkte muessen mit backslash maskiert werden, sonst stehen sie jeweils fuer ein beliebiges zeichen. und mengenangaben werden ueber braces erledigt, z.b. {2,} fuer mind. 2 vorkommnisse des zeichens davor, also bedeutet
      .{2,}
    mind. zwei punkte.

    prost
    seth