5 ms·
this was the original approach for Java, and the main idea behind being able to ship untrusted apps directly to the user and run them in the browser tomcat als
by gnafkcud 2y ago
this was the original approach for Java, and the main idea behind being able to ship untrusted apps directly to the user and run them in the browser
tomcat also gave different privilege levels to different parts of the classpath
nice idea, but didn't seem to work in practice
- justinpombrio 2y agoThat's what I'm calling capabilities at the application level (where you say "this .jar can't access the network"), rather than at the language level (where you say "this function wasn't given access to the network as an argument"). I don't think any widely known language has tried capabilities at the language level. (The language not widely known that does it is E.) The real power will come when you can mix them. In one direction, that looks like `main()` not getting passed a `Network` object because the ".jar" wasn't granted network access. In the other direction, that looks like the system C library you invoked failing to access the network because when you invoked it from Java you failed to provide a `Network` object, so it was automatically sandboxed to not be able to access the network.
- tlavoie 2y agoHave you looked at "Emily" language at all? Same person or two, their original paper isn't reachable at their linked URL, but is on the Wayback Machine. "How Emily Tamed the Caml" - https://web.archive.org/web/20221231184748/https://www.hpl.hp.com/techreports/2006/HPL-2006-116.pdf https://web.archive.org/web/20221231184748/https://www.hpl.h... Emily took the approach of restricting a subset of OCaml, which they were running on Windows machines. No idea how tough it would be to get it running on a modern version. Also for OCaml, the MirageOS unikernel is neat - develop on Linux etc., then recompile configured as a virtual machine with only the drivers (network, filesystem) needed by that one app. - https://mirage.io/ https://mirage.io/
- blibble 2y ago> That's what I'm calling capabilities at the application level (where you say "this .jar can't access the network"), rather than at the language level (where you say "this function wasn't given access to the network as an argument") it wasn't, it was done at the type and classloader level have a read about SecurityManager