Brad,
thank you for your email.
<hat="individual">
Reading your argument, I think it would be very helpful to hear in more
detail from you the concrete reasons for why you think the current
solution is weak and why it would be better in CSP.
Answering to your mentioned arguments:
1. IMHO "save on some header bloat" is a very weak argument, that on the
one hand is not a big problem looking at the current header landscape
and could be used to basically wrap everything from HSTS headers to
whatever into CSP, which then leads to a huge meta-header (or some might
call it "CSP bloat" ;-) ).
2. I think the migration from XFO to FO is straight forward, in fact I
rather see a complication (disadvantage) by moving it to the CSP model
instead of a direct evolution path from XFO to FO.
And actually as I also already described in a previous argument on
websec, the FO functionality is not fully symmetric to all other CSP
directives, and therefore should not be handled in CSP.
In summary, I do think FO would be better to continue as a draft in
Websec and can not see any significant benefit in moving it into CSP.
Could you please provide some more specific reasons or examples about
why exactly FO might be better as part of CSP?
Best regards, Tobias
Ps.: please note, that I am currently on holiday and will only be able
to answer emails in about a weeks time.
On 09/07/12 19:31, Hill, Brad wrote:
Tobias, David and other WebSec participants,
Over at the W3C WebAppSec WG we are beginning to draft a set of new
directives for Content Security Policy focused specifically on User Interface
Safety - protection against clickjacking and other UI Redressing attacks.
As Adam Barth suggested on this list a few weeks ago, WebSec and WebAppSec
should discuss and coordinate on whether new functionality related to UI
embedding, such as ALLOW-FROM or embed-ancestors, would be best developed as
CSP directives or in a new Frame-Options header.
It made sense for the IETF WebSec group to be the lightest and fastest
process to specify the existing behavior of X-Frame-Options, but further
refinements are more in the realm of web user agent behavior. If sites are
going to specify UI safety directives using CSP, using that mechanism rather
than a new Frame-Options header can save on some header bloat, as well as
making it easier to interpret scenarios where a resource wants to obsolete the
X-Frame-Options when new behaviors are available. (e.g., allow embedding if CSP
UI Safety directives are understood, but deny it for user agents that only
understand X-Frame-Options)
The current editor's draft doesn't include these options, but please take a
look.
http://dvcs.w3.org/hg/user-interface-safety/raw-file/tip/user-interface-safety.html
A proposed additional directive for this specification is:
embed-ancestors
The embed-options directive indicates whether the user-agent should embed the
resource using a frame, iframe, object or embed tag, or equivalent
functionality in non-HTML resources. Resources can use this to avoid many UI
Redressing attacks by ensuring they are not embedded into other sites. This
directive replicates some of the functionality of the X-Frame-Options header.
The syntax for the name and value of the directive are described by the
following ABNF grammar:
directive-name = "embed-ancestors"
directive-value = source-list
Unlike policies defined in Content Security Policy 1.0, the embed-ancestors directives is
not subject to the default-src directive. If this directive is not explicitly stated in
the policy its value is assumed to be "*".
If 'deny' is present in the source-list, the resource cannot be displayed in an
embedded context, regardless of the origin attempting to do so, and all other
members of the source-list are ignored. This provides functionality equivalent
to the DENY value of the X-Frame-Options header.
If 'deny' is not present the source-list indicates which origins are valid
ancestors for the resource. An ancestor is any resource between the protected
resource and the top of the window frame tree; for example, if A embeds B which
embeds C, both A and B are ancestors of C. If A embeds both B and C, B is not
an ancestor of C, but A still is.
The 'self' source indicates that content of the same-origin as the protected
resource may embed it. This provides functionality equivalent to the SAMEORIGIN
value of the X-Frame-Options header.
Thank you - we welcome your thoughts and feedback,
Brad Hill
Co-chair, W3C WebAppSec WG
_______________________________________________
websec mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/websec
_______________________________________________
websec mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/websec