Funkcja f()
wykorzystuje eval()
(lub coś równie niebezpiecznego) z danymi, które utworzyłem i zapisałem local_file
na komputerze z uruchomionym programem:
import local_file
def f(str_to_eval):
# code....
# ....
eval(str_to_eval)
# ....
# ....
return None
a = f(local_file.some_str)
f()
jest bezpieczny do uruchomienia, ponieważ ciągi, które mu dostarczam, są moje.
Jeśli jednak kiedykolwiek zdecyduję się użyć go do czegoś niebezpiecznego (np. Dane wprowadzone przez użytkownika), sprawy mogą się potoczyć bardzo źle . Ponadto, jeśli local_file
przestanie być lokalny, stworzy to lukę, ponieważ musiałbym zaufać maszynie, która również udostępnia ten plik.
Jak mam się upewnić, że nigdy nie „zapomnę”, że korzystanie z tej funkcji jest niebezpieczne (chyba że zostaną spełnione określone kryteria)?
Uwaga: eval()
jest niebezpieczny i zwykle można go zastąpić czymś bezpiecznym.