Mark S. Miller wrote:
I don't care about the document objects. What about access between regular normal JavaScript objects that are now in different origins?


       6.2.1Security

User agents must throw a|SecurityError <http://www.whatwg.org/specs/web-apps/current-work/#securityerror>|exception whenever any properties of a|Window <http://www.whatwg.org/specs/web-apps/current-work/#window>|object are accessed when theincumbent script <http://www.whatwg.org/specs/web-apps/current-work/#incumbent-script>has aneffective script origin <http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>that is not thesame <http://www.whatwg.org/specs/web-apps/current-work/#same-origin>asthe|Window|object's|Document| <http://www.whatwg.org/specs/web-apps/current-work/#concept-document-window>'seffective script origin <http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>, with the following exceptions:

*Ready for first implementations*

Tests: 1 ---View... <http://www.whatwg.org/specs/web-apps/current-work/show-tests.html?section=security-2>

Latest Internet Explorer beta: excellent support

Latest Firefox trunk nightly build: excellent support

Latest WebKit or Chromium trunk build: excellent support

Latest Opera beta or preview build: excellent support

JavaScript libraries, plugins, etc: excellent support

 * The|location
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-location>|attribute
 * The|postMessage()
   
<http://www.whatwg.org/specs/web-apps/current-work/#dom-window-postmessage>|method
 * The|window
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-window>|attribute
 * The|frames
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-frames>|attribute
 * The|self
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-self>|attribute
 * The|top
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-top>|attribute
 * The|parent
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-parent>|attribute
 * The|opener
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-opener>|attribute
 * The|closed
   
<http://www.whatwg.org/specs/web-apps/current-work/#dom-window-closed>|attribute
 * The|close()
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-window-close>|method
 * The|blur()
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-window-blur>|method
 * The|focus()
   <http://www.whatwg.org/specs/web-apps/current-work/#dom-window-focus>|method
 * Thedynamic nested browsing context properties
   
<http://www.whatwg.org/specs/web-apps/current-work/#dynamic-nested-browsing-context-properties>

When theincumbent script <http://www.whatwg.org/specs/web-apps/current-work/#incumbent-script>'seffective script origin <http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>is different than a|Window|object's|Document| <http://www.whatwg.org/specs/web-apps/current-work/#concept-document-window>'seffective script origin <http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>, the user agent must act as if any changes to that|Window <http://www.whatwg.org/specs/web-apps/current-work/#window>|object's properties, getters, setters, etc, were not present, and as if all the properties of that|Window <http://www.whatwg.org/specs/web-apps/current-work/#window>|object had their [[Enumerable]] attribute set to false.

For members that return objects (including function objects), each distincteffective script origin <http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>that is not the same as the|Window <http://www.whatwg.org/specs/web-apps/current-work/#window>|object's|Document <http://www.whatwg.org/specs/web-apps/current-work/#document>|'seffective script origin <http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>must be provided with a separate set of objects. These objects must have the prototype chain appropriate for the script for which the objects are created (not those that would be appropriate for scripts whosescript's global object <http://www.whatwg.org/specs/web-apps/current-work/#script%27s-global-object>is the|Window <http://www.whatwg.org/specs/web-apps/current-work/#window>|object in question).

For instance, if two frames containing|Document <http://www.whatwg.org/specs/web-apps/current-work/#document>|s from differentorigins <http://www.whatwg.org/specs/web-apps/current-work/#origin>access the same|Window <http://www.whatwg.org/specs/web-apps/current-work/#window>|object's|postMessage() <http://www.whatwg.org/specs/web-apps/current-work/#dom-window-postmessage>|method, they will get distinct objects that are not equal.




/be



On Wed, Jul 31, 2013 at 8:38 PM, Brendan Eich <[email protected] <mailto:[email protected]>> wrote:

    Mark S. Miller wrote:
    But does the html5 spec say anything about what is supposed to
    happen?

    Sure:


            3.1.2Security

    *Ready for first implementations*

    User agents must throw a|SecurityError
    <http://www.whatwg.org/specs/web-apps/current-work/#securityerror>|exception
    whenever any properties of a|Document
    <http://www.whatwg.org/specs/web-apps/current-work/#document>|object
    are accessed when theincumbent script
    <http://www.whatwg.org/specs/web-apps/current-work/#incumbent-script>has
    aneffective script origin
    
<http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>that
    is not thesame
    <http://www.whatwg.org/specs/web-apps/current-work/#same-origin>as
    the|Document
    <http://www.whatwg.org/specs/web-apps/current-work/#document>|'seffective
    script origin
    
<http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>.

    *Ready for first implementations*

    Latest Internet Explorer beta: buggy support

    Latest Firefox trunk nightly build: buggy support

    Latest WebKit or Chromium trunk build: buggy support

    Latest Opera beta or preview build: buggy support

    JavaScript libraries, plugins, etc: unknown

    When theincumbent script
    
<http://www.whatwg.org/specs/web-apps/current-work/#incumbent-script>'seffective
    script origin
    
<http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>is
    different than a|Document
    
<http://www.whatwg.org/specs/web-apps/current-work/#document>|object'seffective
    script origin
    
<http://www.whatwg.org/specs/web-apps/current-work/#effective-script-origin>,
    the user agent must act as ifall the properties of that|Document
    <http://www.whatwg.org/specs/web-apps/current-work/#document>|object
    had their [[Enumerable]] attribute set to false.



    /be


    On Wed, Jul 31, 2013 at 7:29 PM, Brendan Eich
    <[email protected] <mailto:[email protected]>> wrote:

        Mark S. Miller wrote:


            That's not the hard problem relevant to the current
            question. Given two frames both starting at foo.bar.com
            <http://foo.bar.com> <http://foo.bar.com>. While they're
            both there, their object graphs become arbitrarily
            entangled, which is as it should be. Then, one of them
            truncates to bar.com <http://bar.com> <http://bar.com>.
            Now they are separate origin iframes. What happens to
            their inter-frame pointers, which are now cross-origin
            pointers? In a membraneless browser, how are the
            newly-cross-origin pointers even distinguished from the
            same-origin pointers?


        The answer in pre-membrane Firefox was badly: a reference
        monitor would walk the DOM "parent" link (not parentNode) and
        try to find the right global object, from whose document to
        get an effective script origin (essentially).

        The problem there was performance. I don't know of fast but
        incorrect implementations that allowed access where they
        should not have, but I am old and forgetful (relatively
        speaking; still have a memory like an elephant :-P).

        Cc'ing Boris in case he knows more.

        /be




-- Cheers, --MarkM




--
    Cheers,
    --MarkM
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to