Moin!
Und wenn dann die Shell bemüht wird, um irgendeine Trivialität zu erledigen, mangelt es notorisch immer wieder am Escaping!Dabei ist es aus meiner Sicht absolut unerheblich, ob die jeweils benutzten Variablen eigentlich statische und vernünftige Werte enthalten -
Du meinst, ich sollte auch quasi fest verdrahtete Werte escapen?
Besteht die Möglichkeit, dass der Anwender aus irgendeinem Grund beispielsweise ein Leerzeichen in den Konfigurationswert einträgt? Ja. Also...
Es geht dabei weniger um die Tatsache, dass diese Möglichkeit unwahrscheinlich ist (wobei Leerzeichen in Pfadnamen gerade unter Windows ja nicht unwahrscheinlich sind), sondern darum, dass es im Sinne des Sicherheits-Audits darum geht, potentielle Schwachstellen erst gar nicht entstehen zu lassen.
Wenn man sich den Quellcode durchliest, dann will man in jeder Zeile - für sich genommen - sehen, dass für die Sicherheit alles getan wurde. Bestenfalls guckt man noch in die Zeilen unmittelbar drumherum - obwohl das schon suboptimal ist. Ganz blöd ist es, wenn man sich bei Betrachtung der Zeile erst Gedanken machen muss, welche Werte denn potentiell in der Variablen stehen könnten, und wo man sehen kann, wie sie dorthin gelangen.
Fakt ist, dass sie dies nicht zwingend in jeder Situation tun müssen, und dass es vom Sicherheitsapekt her eine extrem schlechte Idee ist, in einer konkreten Programmzeile eine potentielle Sicherheitslücke offen zu lassen mit dem Argument, dass man eben anderswo, wo der Aufruf dieser Sicherheitslücke gestartet wird, ganz besonders aufpasst, dass auch nichts passiert.
Na, ich weiss nicht: Ich habe das ja nicht als bibliothek geschrieben um den Code an anderer Stelle weiterzuverwerten.
Das ist doch aber irrelevant. Dein Code steht jetzt erstmal im Internet und ist hier verlinkt, also ist anzunehmen, dass die Funktionen eventuell doch mal isoliert Verwendung finden, ohne diese Sicherheitsüberlegungen.
- Sven Rautenberg
"Love your nation - respect the others."