suleiman hat geschrieben:Was muß ich in meine CGI-Skripts schreiben damit $REQUEST_METHOD und $QUERY_STRING nicht aus versehen ein Kommando auslösen ?
Normalerweise würde ich ja generell davon abraten, überhaupt mit CGI zu arbeiten.
Wie dem Shellscript zu entnehmen war, war es schon mal kein schlechter Ansatz die Strings via sed bereinigen zu wollen. Auch wenn man zum Parsen noch nichts bereinigen muss, wenn nur auf Validität geprüft wird. Daher kann man Variablen in vielerlei Hinsicht vorab auf ihren Inhalt prüfen und ggf. Inhalte aussortieren, bspw. mit multiplen Test -und Regex-Konditionen, bevor Inhalte an sensible Funktionen weitergereicht werden. Und dann bei Bedarf, sofern erforderlich, können sie immer noch editiert werden.
Ein Beispiel:
Code: Alles auswählen
while read INPUT; do
[ -z "$INPUT" ] && continue
[[ "$INPUT" =~ [\.\*\<\>\&\?\/] ]] && echo "Found dangerous chars '[.*<>&?/]'" | tee -a > $LOG && INPUT="" && continue
[[ "$INPUT" =~ ^[[:alnum:]]{10}$ ]] || continue
echo "Do something with "$INPUT" ...."
done
Um aber generell mehr Sicherheit in Shellscripten zu etablieren, empfiehlt sich das Programm shellcheck. Es kann besonders für Anfänger sehr nützlich sein, und ernste Probleme inkl. Lösungen aufzeigen.
suleiman hat geschrieben:Nachtrag:
Ich habe irgendwas von irgendwelchen $IFS gehört...
Was sind IFS, bzw kann man damit Kommandos verhindern ?
Nein das ist für andere Belange gedacht.