20 minutes ago, Nadeem Abdul Hamid wrote:
> 
> In general, any scenario where you need to dynamically load
> *untrusted* code might be a situation where you would want to use a
> sandbox to isolate that code from your program and yet still be able
> to interact with it to some degree. If all you wanted to do was
> dynamically load code that you trust (i.e. you wrote yourself, or
> trust the source), then instead of a sandbox there are other
> mechanisms to do that more directly (things like 'eval',
> 'dynamic-require', 'load', etc.)

Security is of course the main use of sandbox, but the isolation
aspect is important too.  For example, you want to run some code and
make sure that it has a "clean" environment and that it cannot
interact with your own environment.  It's true that there are all of
these tools -- like creating a new namespace to evaluate the code,
wrapping the code in a new custodian, diverting its IO, etc -- and the
sandbox library is basically doing all of that.  For an example,
consider drracket running your code[*].  The
`call-with-trusted-sandbox-configuration' function encapsulate a
sandbox configuration for such cases.

([*] It's not using the sandbox library, but that's mostly because
it's older.)

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to