Security:Strawman Model: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 39: Line 39:
Let origin(s) = (s matches 'scheme://hostpart') || unknown.
Let origin(s) = (s matches 'scheme://hostpart') || unknown.


Let fake(s) = (!s || matches 'about:' || s matches 'data:' || s matches('javascript:').
Let pseudo(s) = (!s || matches 'about:' || s matches 'data:' || s matches('javascript:').


Let global() = stack.top().global
Let global() = stack.top().global.


Let subject() = stack.top().subject
Let subject() = stack.top().subject.


Let open(s) = new Window(null, s, fake(s) ? subject() : origin(s), global()).
Let urlPrincipal(s) = pseudo(s) ? subject() : origin(s).
 
Let open(s) = new Window(null, s, urlPrincipal(s), global()).


Let principal(x) = (x is Window) ? x.principal : principal(x.parent).
Let principal(x) = (x is Window) ? x.principal : principal(x.parent).


Let access(o) = principal(o) <= (stack[0] ^ ... ^ stack.top()).
Let access(o) = principal(o) <= (stack[0] ^ ... ^ stack.top()).
Confirmed users, Bureaucrats and Sysops emeriti
419

edits