2011-12-08 10 views
8

Mam python osadzony w aplikacji jako platforma skryptów, dzięki czemu użytkownicy mogą pisać skrypty Pythona. Próbuję zapobiec importowi, aby w żaden sposób nie spowodować szkód i trzymać się dostarczonego API.Zapobieganie importom w języku Python

I mają pochodzić z następującego kodu Pythona:

__builtins__ .__import__= None 
reload = None 

Wydaje się zapobiec importu i zapobiega przeładunku modułów. Zapobieganie ponownemu ładowaniu jest wymagane, więc nie mogą ponownie załadować wbudowanych elementów, co przywróci im działający import.

Jednak nie jestem ekspertem od Pythona. Czy jest coś jeszcze, czego mi brakowało, aby użytkownik mógł nadal importować moduły?

Dzięki

+3

Proszę spojrzeć na to [pytanie] (http://stackoverflow.com/q/3068139/183066). – jcollado

+1

Dzięki. Z tego posta wynika, że ​​oprócz importu istnieje naprawdę sporo niebezpiecznych rzeczy, więc samo zapobieganie importowi prawdopodobnie nie wystarczy. –

+0

Jeśli użytkownik uruchamia aplikację na swoim komputerze, co może być "niebezpieczne" w kwestii umożliwienia mu pełnego korzystania z Pythona? A może Twoja aplikacja będzie otrzymywać skrypty na serwerze od niezaufanych zdalnych użytkowników? – jsbueno

Odpowiedz

2

Prawdopodobnie chcesz uruchomić Python w piaskownicy. Istnieje wiele sposobów na zrobienie tego, na przykład PyPy ma sandboxing support.

Można również spróbować przeprowadzić proces piaskownicy samego procesu Pythona za pomocą zewnętrznych narzędzi, ale przypuszczam, że jest to zależne od systemu operacyjnego.

+1

Dzięki za link o piaskownicy. Naprawdę szukałem czegoś, co działa bardziej ogólnie bez PyPy. Kod, który wysłałem, działa na przykład na CPython i IronPython. –

+0

Łatwo zhakować coś w celu zapobieżenia importowi, i prawdopodobnie będą zawsze nadpisywani przez mądrych ludzi. Pypy wdraża sandboxing w swojej strukturze, zrobiony we właściwy sposób. – jsbueno