Multiple Users and Security

Lex Spoon lex at cc.gatech.edu
Fri Jan 25 00:04:52 UTC 2002


>       Thus, I'd like to make some classes use-only, and some classes
>       inaccessible, from their scripts. Is there any easy way of going
>       about this or existing functionality that may be helpful? Or do I
>       just have to dig down into the details of the compiler? 
> 
> 

If you want real security, then it can't be this simple.  For now, you
need to either trust your users, or not set this up.

A few fun items to think about:

	Compiler evaluate: 'Smalltalk := nil'

	3 class superclass superclass superclass superclass withAllSubclasses
detect: [ :c | c name = #Compiler ]

	Float pi at: 1 put: 0

	$a instVarAt: 1 put: ($b asciiValue)


I did a start at a secure execution environment called Islands, but alas
didn't finish it.  You can see where I got at this URL:

	http://minnow.cc.gatech.edu/squeak/2074

In principal it's not too hard, but it's a bear to retrofit an existing
system.  Nevertheless, I got as far as running a bouncing atoms morph on
an island and exporting its display safely to the surrounding World,
before my schooling got in the way.

(For the curious, the above would be prevented in Islands system by:

	Every island has its own table of global variables, and Compiler
wouldn't be in it.

	#superclass reads a class instance variable, which is disallowed on
restricted islands.

	Float's and Character's no longer have methods like these.)


-Lex



More information about the Squeak-dev mailing list