Maciej Stachowiak schrieb:
On Feb 12, 2010, at 11:54 PM, Adam Barth wrote:
On Fri, Feb 12, 2010 at 11:48 PM, Michal Zalewski
<lcam...@coredump.cx> wrote:
Can a frame in @sandbox ever navigation the top-level frame? If not,
that would make it hard to use @sandbox to contain advertisements,
which want to navigate |top| when the user clicks on the ad.
Ads would want to be able to do that, but user-controlled gadgets
shouldn't. I suppose the top-level page should be able to specify, and
the entire @sandbox chain would need to be traversed to make the call
(so that @sandbox included on example.com that is prohibited from
messing with the top-level frame can't just create a nested frame
without the restriction, and bypass the check).
I assume that chain-style checking is already a part of the spec, as
we obviously don't want other restrictions to be removed in a similar
manner?
Yes, the sandbox restrictions collect in subframes.
Perhaps we want an "allow-frame-busting" directive? In the
implementation we have an "allow-navigation" bit that covers
navigation |top| as well as window.open, etc. Maybe we want a more
general directive that twiddles this bit?
Some may want to have a directive that allows only opening new windows
and not navigating the top level. This is the policy Caja tries to
enforce by default for instance. For ads I could imagine wanting only
top-level navigation and not window opening. So maybe this should be two
flags.
An "allow-navigation" directive should IMO be ok. Given that a
navigation element is allowed in the context, the user experience should
actually not differ whether it is clicked in a sandboxed context or not.
Some off-topic thoughts about this:
Most non-academic websites apply target="_blank" on all external links.
In order to allow a consistent user experience, it might be worth to
encourage UAs to offer the following user settings:
1. "Open new tabs rather than windows"
This should not only apply to windows opened with target="_blank" (as it
is already possible e.g. in Firefox), but also to the ones opened by
window.open().
2. "Always open links to other domains in a new tab" (resp. window, if
the above option is not set)
I would even encourage to set this as the default, as it is a de-facto
standard at least in commercial and community websites.