Security:Strawman Model: Difference between revisions

no edit summary
No edit summary
Line 41: Line 41:
                     document:Object}
                     document:Object}
</pre>
</pre>
=== Grammar ===
Informal subset EBNF grammar for an XHTML-subset markup language, with embedded <i>semantics</i>, capitalized non-terminals, and quoted or lowercase terminals.
  Document ::=                          <i>document = new Document()</i>
              Content                  <i>document.close()</i>
 
  Content  ::= (Text | Markup)*
 
  Text    ::= text                    <i>document.appendChild(new Text(text))</i>
 
  Markup  ::= < 'a' 'href' '=' string '>' text '</' 'a' '>'
                                        <i>document.appendChild(new Link(string, text))</i>
            | < 'button' 'onclick' '=' string > text </ 'button' >
                                        <i>document.appendChild(new Button(string, text))</i>
            | < 'iframe' 'src' '=' string />
                                        <i>document.appendChild(new IFrame(string))</i>
            | < 'script' > text </ 'script' >
                                        <i>document.appendChild(new Script(text))
                                        eval(text)</i>


=== Definitions ===
=== Definitions ===
Line 88: Line 109:


Let canAccess(o, r) = allAccess(o, r) || principal(o) <= mapMeet(stack).
Let canAccess(o, r) = allAccess(o, r) || principal(o) <= mapMeet(stack).
=== Grammar ===
Informal subset EBNF grammar for an XHTML-subset markup language, with embedded <i>semantics</i>, capitalized non-terminals, and quoted or lowercase terminals.
  Document ::=                          <i>document = new Document()</i>
              Content                  <i>document.close()</i>
 
  Content  ::= (Text | Markup)*
 
  Text    ::= text                    <i>document.appendChild(new Text(text))</i>
 
  Markup  ::= < 'a' 'href' '=' string '>' text '</' 'a' '>'
                                        <i>document.appendChild(new Link(string, text))</i>
            | < 'button' 'onclick' '=' string > text </ 'button' >
                                        <i>document.appendChild(new Button(string, text))</i>
            | < 'iframe' 'src' '=' string />
                                        <i>document.appendChild(new IFrame(string))</i>
            | < 'script' > text </ 'script' >
                                        <i>document.appendChild(new Script(text))
                                        eval(text)</i>
Confirmed users, Bureaucrats and Sysops emeriti
419

edits