On Tue, 21 Feb 2006 10:31:51 +0600, Hallvord Reiar Michaelsen Steen <[EMAIL PROTECTED]> wrote:

What is or what isn't technically simple to implement in existing
implementations should perhaps not be what decides how specifications are
written.  It is clear that it is possible to implement per-function
security tracking (though slightly unclear how such security tracking
should work; which of all currently executing functions determine the
security context?)

Only the innermost one does. I've posted the exact rules a couple of weeks ago.

It is also clear that it hasn't been exactly been required by implementations yet, so it is likely that an implementation doesn't have it already. And since it involves storing more information, implementing it is likely to cost some
in terms of memory use.

In Gecko, as far as I can see from its source code, it doesn't add memory overhead. It already has origin tracking of some kind (used to implement the today's usual security restrictions).

why doesn't the author simply make
sure to serve the untrusted content from another server (with another
host name or port number, that is, not necessarily another machine)?

This is what LiveJournal does now. However:
1. For many small sites it's not an option,
2. It doesn't solve the problem of untrusted JS included by a page.

Seems that brings another (although simpler) set of problems though:
what if the untrusted content contains a "</SANDBOX>" tag, or if it
ends with "<!--", or possibly other syntax anomalies?

I never said that the website won't have to do HTML cleaning for user-supplied content. But with HTML 5 reference parsing algorithm, such cleaning is going to be much easier and straightforward: parse the text into DOM (as if it was inside BODY, for example), remove or modify forbidden elements, then serialize it. That way, </SANDBOX> will be ignored as an easy parse error because it doesn't match an opening tag within the user-supplied text. An unclosed comment will be ignored, too.

What if it doesn't contain exactly that, but something else that
triggers equivalent behaviour in the HTML parser in some implementation?
HTML parser are traditionally quite complex, and quite "fuzzy".  The
fuzziness hasn't been a security problem before, now all of a sudden it
might be.

HTML 5 will make HTML parsing in standards mode well-defined, with predictable error recovery.

Did we discuss how the UA should handle a closing </sandbox> tag?
Would it need to scan forward in the markup to find other closing
tags and determine if the current one is a part of the enclosed
markup or the end of the SANDBOX in that page? Perhaps only the first
and the last SANDBOX open/close tags can be taken into account and
others discarded?

No need to do that. SANDBOX elements can be nested like many others. Nevertheless, a </SANDBOX> tag without a matching opening tag inside the user-supplied content will be ignored during the HTML cleanup process described above.

There is one more such case: when </SANDBOX> is injected using document.write("</SANDBOX>"), but that can be easily circumvented.


--
Opera M2 8.5 on Debian Linux 2.6.12-1-k7
* Origin: X-Man's Station [ICQ: 115226275] <[EMAIL PROTECTED]>

Reply via email to