Zeichen vor jedes Wort aus URL Parameter

  • Moin,


    Folgendes Problem.

    Über &_GET hole ich mir aus der URL den Parameter raus. In meinem Falle sind das Verzeichnisnamen.


    Da kann der Parameter mal so aussehen "index.php?folder=/Test/Test%201/" aber auch so "index.php?folder=/Test/Test%201/Test%202/Test%203"

    Wenn ich diese dann in einer Variable Speichere, und ausgebe sieht es halt dementsprechend so aus "/Test/Test 1" oder halt "/Test/Test 1/Test 2/Test 3".


    Ich versuche dann halt in diesen Verzeichnissen z.b in Verzeichnis "Test3" ein Ordner zu erstellen. Der Code dafür ist dann wie folgt:



    Bei Leerzeichen im Link werden die Leerzeichen ja mit einem "%20" gekennzeichnet. Also z.b

    "index.php?folder=/Test/Test%201/Test%202/Test%203"


    Da ich das ganze aber über Linux mache und er beim erstellen des Ordners den Pfad ($datei) angebe, komme ich mit (%20) nicht weiter, da dies bei Linux kein Leerzeichen ersetzt.
    Ich müsste den Pfad mit ' angeben. Also für jeden Ordner wo ein Leerzeichen ist diese Zeichen davor und dahinter setzen, damit Linux das erkennt.

    Im Grunde müsste das dann so aussehen /Test/'Test1'/'Test2'/'Test3' leider weiß ich nicht wie genau ich das mache und wollte Fragen ob da jemand einen Tipp hat?




    Lieben Gruß

    Marvin

  • Ich weiß nicht, was du da genau vorhast , aber wenn du zb einen User erlaubst Daten hochzuladen , oder Ordner zu erstellen , dann mußt du das vorher prüfen und ggf. korrigieren.

    Wie schon gesagt wurde, sind Sonderzeichen und Umlaute nicht der beste Weg.

    In anderen Foren wird auch gesagt das es mittlerweile kein Problem ist, die zu nutzte (auch ín Variablen usw...).

    Ich würde darauf aber trotzdem verzichten , das sind alles mögliche Fehlerquellen, die man so schon gleich vermeiden kann.

  • Ja wie gesagt, es gibt bestimmt immer jemanden der einen Ordner Namens "Aufgabe Nummer 4" erstellt. (Als Beispiel)
    Gibt es denn keine Möglichkeit das zu machen das überall die ' davor und dahinter zu machen? Wie beschrieben?

  • Ja wie gesagt, es gibt bestimmt immer jemanden der einen Ordner Namens "Aufgabe Nummer 4" erstellt. (Als Beispiel)
    Gibt es denn keine Möglichkeit das zu machen das überall die ' davor und dahinter zu machen? Wie beschrieben?

    Dazu müsstest du das in PHP prüfen und verbieten.

    Aber ok.

    Du möchtest aus dem Link

    blabla.de/Aufgabe Numme 4/index.php 

    zu dieser wird

    blabla.de/'AufgabeNumme4'/index.php


    und Warum die ' davor und danach ?

    Haben die ein sinn ?

  • Ich erstelle bei Linux mittels eines Befehls ja einen Ordner. Dazu muss ich den Pfad angeben.


    z.b halt /Test/Aufgabe Nummer 4


    Der Befehl sieht dann so aus sudo mkdir /Test/Aufgabe Nummer 4/Neuer Ordner


    /Test/Aufgabe Nummer 4 ist das Verzeichnis und Neuer Ordner dann der Name des Ordners der erstellt wird.


    Linux erkennt leider keine Leerzeichen. Deswegen muss man da die Zeichen davor und dahinter machen.


    Also müsste der Befehl dann so aussehen sudo mkdir /Test/'Aufgabe Nummer 4'/'Neuer Ordner'

  • Der Code dafür ist dann wie folgt:

    Mutig. Sehr mutig. Oder *richtig* dämlich. Such es dir aus. Mit dem Code kann ein Angreifer beliebigen Code auf deinem Rechner ausführen - und das mit root-Rechten! Da fehlt die Behandlung des Kontextwechsels, zudem sollte der Webserver keine sudo-Rechte haben (bzw. die Möglichkeit haben solche Befehle auszuführen).

  • Mit dem Code kann ein Angreifer beliebigen Code auf deinem Rechner ausführen - und das mit root-Rechten! Da fehlt die Behandlung des Kontextwechsels

    Inwiefern meinst du das?

    Einfach den Ordner ohne "sudo" erstellen?

  • Inwiefern meinst du das?

    Einfach den Ordner ohne "sudo" erstellen?

    Nein (das sudo hat da zwar nichts zu suchen, hat mit dem eigentlichen Problem aber nichts zu tun). Die Behandlung von Kontextwechseln ist eigentlich das wichtigste bei der Programmierung, das gilt nicht nur wenn man das Script etwas auf der Kommandozeile ausführen lässt sondern z.B. auch wenn man mit Datenbanken arbeitet oder auch wenn man Inhalt in die HTML-Ausgabe schreibt. Auf die einzelnen Arten von Kontextwechseln wird in der Fortsetzung des verlinkten Artikels eingegangen, auch zum Thema Shell gibt es ein Unterkapitel.


    PS: dass du auf jeden Fall auch sicherstellen musst dass nicht beliebige Verzeichnisse erstellt werden können ist hoffentlich klar …

  • Okay, habe grad mal das mit dem escapeshellcmd und escapeshellarg gelesen.


    Leider verstehe ich das nicht ganz so genau? Wie genau würde man das in meinem Code anwenden? Oder in einem anderen Code der ähnlich aufgebaut ist?

  • Leider verstehe ich das nicht ganz so genau? Wie genau würde man das in meinem Code anwenden? Oder in einem anderen Code der ähnlich aufgebaut ist?

    Was genau hast du an dem Beispiel im Handbuch zu escapeshellarg() (die Funktion brauchst du) nicht verstanden? Da steht zwar nur ein kurzes Beispiel aber das Prinzip sollte klar werden: die Variable mit dem Pfad darf nicht direkt in den Shell-String eingebaut werden sondern muss vorher durch die Funktion gejagt werden.


    Und vergiss nicht mein PS aus #14 zu beachten!

  • Was für Verzeichnisse genau hast du den im Kopf? Die nicht erstellt werden sollten.

    Ernsthaft? Natürlich alles was außerhalb des vorgegebenen Verzeichnisses (bei dir wohl »/media/AzubiFiles«) liegt. Wäre vielleicht nicht ganz so toll wenn du auf einmal z.B. in /usr/bin o.ä. neue Verzeichnisse (bzw. sogar Dateien wenn ich mir anschaue was du sonst noch so machst) angelegt werden - da du mit sudo arbeitest wäre das (ohne entsprechende Vorkehrungen) überhaupt kein Problem.


    Bitte überleg dir ganz genau ob du das wirklich umsetzen willst, mir schein nicht so als wärst du dir im Klaren darüber was für Sicherheitsscheunentore du da aufreißt!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!