Eine Funktion f()
verwendet eval()
(oder etwas so Gefährliches) Daten, die ich local_file
auf dem Computer erstellt und gespeichert habe, auf dem mein Programm ausgeführt wird:
import local_file
def f(str_to_eval):
# code....
# ....
eval(str_to_eval)
# ....
# ....
return None
a = f(local_file.some_str)
f()
ist sicher zu laufen, da die Zeichenfolgen, die ich ihm zur Verfügung stelle, meine eigenen sind.
Wenn ich mich jedoch jemals dazu entscheide, es für etwas Unsicheres (z. B. Benutzereingaben) zu verwenden, können furchtbare Fehler auftreten . Wenn das nicht local_file
mehr lokal ist, entsteht eine Sicherheitsanfälligkeit, da ich dem Computer vertrauen muss, der auch diese Datei bereitstellt.
Wie soll ich sicherstellen, dass ich nie "vergesse", dass die Verwendung dieser Funktion unsicher ist (es sei denn, bestimmte Kriterien sind erfüllt)?
Hinweis: eval()
ist gefährlich und kann normalerweise durch etwas Sicheres ersetzt werden.