PeterPawn
IPPF-Urgestein
- Mitglied seit
- 10 Mai 2006
- Beiträge
- 15,278
- Punkte für Reaktionen
- 1,753
- Punkte
- 113
Eben ... ich habe Dir die Konsequenzen dieser Anführungszeichen versucht vor Augen zu führen. Ist das nach Deiner Ansicht alles ein einziger Parameter?Da stehen doch schon welche.
Das kommt darauf an, was das genau soll und wer da alles Zugriff hat. Es ist generell keine gute Idee, Eingabedaten aus "unbekannter Quelle" (und hier noch in unbekanntem Umfang) einfach in einem anderen Kommando weiterzuverwenden. Da komme ich einfach noch mal auf das Beispiel mit dem "printf" an anderer Stelle zurück ... Du kannst ja mal probieren, wie das "curl" reagiert, wenn Du die Eingabedaten mit zwei Bindestrichen (--) beginnen läßt und/oder ungültige Optionen/Formate in den Daten angibst.Kannst du kurz andeuten, woran ich da (noch) denken sollte?
Oder als weiteres Beispiel mal probieren, was bei einer Option "--output /var/post_install" passiert ... ich wäre sehr verblüfft, wenn der Inhalt dieser Datei dann nicht mit dem Inhalt des Downloads von der URL überschrieben würde - und das ist exakt das Shell-Skript, was von Deiner FRITZ!Box beim nächsten "shutdown"- oder "reboot"-Kommando abgearbeitet wird. Wie geschrieben ... es kommt natürlich darauf an, wer oder was diese "Seite" benutzen darf - aber eine unsichere Seite ist (gerade auch mit "bash") extrem schnell erstellt und wenn die dann "in die falschen Hände gerät", verliert man leicht die "Herrschaft" über das entsprechende Gerät. Das mit "--output" und der "post_install" ist auch nur ein (eher simples) Beispiel - mir fallen da garantiert noch jede Menge anderer denkbarer "Angriffe" ein.
Wenn man so etwas macht, sollte man nicht die gesamten Optionen als Zeichenkette "rüberwachsen" lassen, sondern so viel wie möglich "fest" im Skript setzen und nur die unbedingt notwendigen Variablen aus dem Request nehmen. Wenn ich weiß, daß der Body eine Property namens "URL" enthält und darin die URL zu finden ist, kann ich das auch "quoten" und damit dafür sorgen, daß darin eingeschmuggelte "--output"-Optionen eben nicht als solche erkannt, sondern als Teil der URL angesehen werden, was dann i.d.R. zum Fehler beim Download und nicht zum Überschreiben einer Datei führt. Wie das geht mit dem "als Ganzes" für eine Variable, hast Du ja schon schön vorgeführt.