2017-09-29 2 views
1

Ich arbeite an einem Programm, um Anfragen in bash zu verarbeiten, die von Benutzern in einem WebInterface angefordert werden. Um den Benutzern Flexibilität zu geben, können sie für jeden Job mehrere Parameter angeben. Am Ende wird die Anfrage in einer Datei mit einem bestimmten Namen gespeichert, so dass das Bash-Skript die angeforderte Aufgabe ausführen kann.Quellkonfigurationsdatei vermeidet jegliche Ausführung

ENVIRONMENT="PRO" 
INTEGRATION="J050_provisioning" 
FILE="*" 
DIRECTORY="out" 

Skript diese Datei wird Quelle, so die bash die benötigten Aufgaben Benutzer angefordert auszuführen:

Diese Datei am Ende wird wie folgt gefüllt. Und es funktioniert großartig so weit, aber ich sehe ein Sicherheitsproblem mit diesem, wenn der Benutzer bösartige Daten eingibt, so etwas wie:

SOMEVAR="GONNAHACK $(rm -f some_important_file)" 
OTHERVAR="DANGEROUZZZZZZ `while :; do sleep 10 & done`" 

Dies wird unerwünschte Wirkungen verursachen, wenn die Datei Sourcing :). Gibt es eine Möglichkeit, zu verhindern, dass eine Quelldatei irgendeinen Code außer Variableninitialisierungen ausführt? Oder der einzige Weg wäre nur grep die Quelldatei vor der Beschaffung es zu überprüfen, ist es nicht gefährlich?

Antwort

1

Nur nicht Quelle. Machen Sie es zu einer Konfigurationsdatei, die aus name=value Zeilen besteht (ohne die doppelten Anführungszeichen), lesen Sie jedes Name/Wert-Paar und weisen Sie dem Namen einen Wert zu. Um kritische Variablen wie PATH nicht zu überschreiben, setzen Sie den Namen beispielsweise mit CONF_ voran.

Crude Code:

while IFS='=' read -r conf_name conf_value; do 
    printf -v "CONF_$conf_name" '%s' "$conf_value" \ 
    || echo "Invalid configuration name '$conf_name'" >&2 
done < your_configuration_file.conf 

-Test funktioniert es:

$ echo "${!CONF_*}" 
CONF_DIRECTORY CONF_ENVIRONMENT CONF_FILE CONF_INTEGRATION CONF_OTHERVAR CONF_SOMEVAR 

$ printf '%s\n' "$CONF_SOMEVAR" 
GONNAHACK $(rm -f some_important_file) 
+0

Thank you! Es funktioniert ganz gut :) – alphamikevictor

Verwandte Themen