Ma to związek z modelem obiektowym Pythona - zawsze istnieje sposób na uzyskanie odniesienia do obiektów, które mogą być niebezpieczne. Zapoznaj się z dokumentacją modułu rexec i rozdziałem ograniczonego wykonywania dokumentacji, aby uzyskać informacje na temat problemów, a także:
Ograniczenia nie mają nic wspólnego z PostgreSQL, są związane z implementacją interpretera CPython, a nawet z samym językiem Python.
Niektóre inne języki sprawdzały środowiska wykonawcze, takie jak Perl, Java, JavaScript i Lua. Większość z nich napotyka szereg problemów związanych z bezpieczeństwem, ponieważ takie ograniczone środowiska wykonawcze są bardzo trudne do ochrony przed wszystkimi możliwymi exploitami jailbreak.
Naprawdę nic nie stoi na przeszkodzie, aby PostgreSQL dodał półkrytyczny interpreter Pythona, ponieważ rexec jest „wystarczająco dobry” do wielu celów. PostgreSQL nie jest jednak skłonny do tego, aby być może tylko w większości dość dobrym. Prawdopodobnie zostanie to zaakceptowane tylko wtedy, gdy zostanie oznaczone jako tylko superużytkownik, ale zawsze możesz wtedy przyznać dostęp do niego określonym użytkownikom. Byłoby to lepsze niż niezaufany Python.
Osobiście uważam, że PL / V8 lub podobny jest tutaj przyszłością i chciałbym, aby zmierzał w kierunku wsparcia w rdzeniu.
Ja też niejasno zgłębiłem pomysł zaufanego Mono, który może ładować „bezpieczne” zestawy napisane w C #, VB.NET, IronPython lub cokolwiek, ale nie był w stanie wiele zrobić na ten temat.
rexec
modułu Pythona jako nieodłącznie niepewny, jak to opisano powyżej. Wyobrażam sobie, że może plpython korzystający z PyPi mógłby zapewnić tryb ograniczony, z którego Pg mógłby wtedy skorzystać. Nie szukałem, czy jest dużo pracy. Mylisz się także co do „specjalnej zaufanej wersji Perla” - w rzeczywistości jest to perfekcyjnie zwyczajny Perl, ten sam interpreter jest używany dla plperl i plperlu. Różnica polega na konfiguracji środowiska wykonawczego.pp_require_safe
a zwłaszczaplperl_trusted_init
. Nie wiem wystarczająco dużo, aby mieć opinię na temat prawdziwego bezpieczeństwa ograniczonego wykonywania Perla. Wolałbym zobaczyć zaufaną wersję Lua lub uzyskać lepszy dostęp do myśli i adopcji, zaufanego tłumacza JavaScript. Ale to, co mamy, to na razie plperl.