Check out the new USENIX Web site. next up previous
Next: setPrivate, unsetPrivate Up: Our Implementation Previous: Property and External Interface

Access Control List (ACL) Support

Because an ACL is tied to a document object, the default ACL is the subject origin URL that created the document. However, as stated earlier, that script may change the value of document.ACL to enlarge the set of URLs that can access objects that the ACL protects.

We implement ACL checks in those places in the interpreter code where one object attempts to access an object that might have arisen from a different context. The implementation checks the ACL for the (containing object of the) object being accessed against the accessing script's (subject) origin URL. If the two are identical, or if one of the URLs in the ACL is a prefix of the subject origin URL, then the check succeeds, and access is granted. Otherwise an ACL violation occurs. As above, the continuation policy on ACL violation is controlled by a preference, but access to the protected object is never granted if a violation occurs.

As described above, our current implementation uses only prefix matching for ACL checks rather than fully general regular expressions, which are costly to evaluate. Logically, an ACL check has to be performed for each object access. Note however, that the ACL check actually has to be performed only once for each ACL/subject pair if we cache the outcome of the check. (and adjust or flush the cache when there is an assignment to an ACL). Thus under such cache optimization, the use of regular expressions becomes feasible.


next up previous
Next: setPrivate, unsetPrivate Up: Our Implementation Previous: Property and External Interface
Alain Mayer
8/30/1999