Po prostu bawiłem się pomysłem i nie mogłem wymyślić sposobu na rozwiązanie tego problemu w backendach bez zniechęcenia do problemów z bezpieczeństwem.Ocena algorytmów od "niezaufanych" użytkowników
Załóżmy, że chcę dać użytkownikom możliwość tworzenia prostych algorytmów za pośrednictwem usługi internetowej i testowania ich na małych listach, np. range(0, 5)
następnie zgłosić wyniki z powrotem za pośrednictwem innego serwisu internetowego, szablonu lub wiadomości e-mail, tak naprawdę nie ma znaczenia, jest to ocena, która mi przeszkadza.
Korzystanie python:
class Algorithm(whatever):
function = whatever.CharField(max_length=75)
Użytkownik może wprowadzić coś takiego:
'f(x)=x+(x/5)**0.75'
Oczywiście mógłbym wykorzystać eval
, pozbawiając wszelkich Zabudowy, sznurki inne niż "x" itd., ale to prawdopodobnie byłaby niefortunna praktyka.
Jedyne, co mogę wymyślić, to przenieść dowolną funkcję oceny do interfejsu JavaScript.
Cóż, Google z pewnością robi tego rodzaju rzeczy w swoich kodeksach. Zastanawiam się, jak rozwiązują ten problem. Być może uruchom niezaufany kod maszyny wirtualnej z wymaganą konfiguracją. Więc nawet jeśli zablokują maszynę wirtualną, nadal jesteś bezpieczny – inspectorG4dget
, jeśli usuniesz ewentualne słowo kluczowe "importuj", nic nie powinno się stać z punktu widzenia uszkodzenia danych. –
@MaxLi Co z '__import__'? – Natan