Fork me on GitHub
#clojure-poland
<
2018-05-22
>
masztal07:05:15

cześć, szukam rozwiązania pozwalającego na bezpieczne wywoływanie kodu dostarczanego przez użytkownika, tzn. użytkownik pisze funkcję, a ja chcę ją skompilować i odpalić. Pisząc bezpieczne mam na myśli, że z kodu użytkownika nie ma dostępu do danych mojego programu, ani do funkcji systemowych (np. System/Exit), Thready też mu nie są potrzebne

masztal07:05:26

ktoś jakieś doświadczenie / przemyślenia w tym temacie ma?

michal09:05:11

@masztal jakiś czas temu to przechodziłem i ogólnie konkluzja jest taka, że raczej ciężko skonstruować sandboxa, z którego nie da się wyskoczyć. ja skończyłem z odseparowanym od aplikacji kontenerem dockerowym z odpowiednio dostosowanym SecurityManagerem i security policies. Tematy, które cię interesują to tak naprawdę "jvm sandboxing".

masztal09:05:39

ok, dzięki za wskazówki 🙂 a jak zapewniłeś komunikację między aplikacją a kontenerem?

michal09:05:06

poprzez EDN. ja akurat bazowałem na plikach, ale równie dobrze możesz skonstruować prosty RPC, np. korzystając ze slackera https://github.com/sunng87/slacker

masztal09:05:20

piękna sprawa ten slacker na pierwszy rzut oka 😉

masztal09:05:24

dzięki wielkie 😉

michal10:05:59

nie ma sprawy. powodzenia 🙂