Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以隔离domain.ext、sub1.domain.ext和sub2.domain.ext’;谁是彼此的饼干?_Javascript_Cookies - Fatal编程技术网

Javascript 是否可以隔离domain.ext、sub1.domain.ext和sub2.domain.ext’;谁是彼此的饼干?

Javascript 是否可以隔离domain.ext、sub1.domain.ext和sub2.domain.ext’;谁是彼此的饼干?,javascript,cookies,Javascript,Cookies,我正在开发一个由domain.ext提供服务的web应用程序。此web应用程序使用基于cookie的会话,使用户能够在子域(例如sub1.domain.ext、sub2.domain.ext)上托管包含自定义JavaScript的网页。子域不使用cookie支持的会话 鉴于此设置,是否可以确保以下各项: sub1.domain.ext的用户无法读取或写入domain.ext的cookie(即,sub1.domain.ext页面中嵌入的JavaScript不能窃取或劫持domain.ext会话)

我正在开发一个由domain.ext提供服务的web应用程序。此web应用程序使用基于cookie的会话,使用户能够在子域(例如sub1.domain.ext、sub2.domain.ext)上托管包含自定义JavaScript的网页。子域不使用cookie支持的会话

鉴于此设置,是否可以确保以下各项:

  • sub1.domain.ext的用户无法读取或写入domain.ext的cookie(即,sub1.domain.ext页面中嵌入的JavaScript不能窃取或劫持domain.ext会话)
  • 嵌入在sub1.domain.ext页面中的JavaScript无法在sub2.domain.ext读取或写入cookie,反之亦然

  • 我已经测试了一些东西,例如,通过在sub1.domain.ext的窗口中运行
    document.domain='domain.ext'
    ,似乎可以从sub1.domain.ext与domain.ext的cookies交互。是否有某种方法可以防止这种情况发生,例如在从domain.ext设置域时指定某种策略?

    您不能通过设置
    domain
    参数来指定cookie仅对
    example.com
    有效。如果您设置了
    domain=example.com
    ,它将对
    *.example.com
    有效

    example.com
    上设置cookie而不使用
    domain
    参数在大多数浏览器中仅为
    example.com
    设置cookie。但不是我


    因此,如果您想要拥有具有单独cookie上下文的子域,您应该仅从
    www.example.com
    为您的站点提供服务。正如Gaby所说,通过对
    www
    版本进行301重定向,当然您仍然可以通过
    example.com
    支持访问。

    您可以强制您的
    domain.ext
    重定向到
    www.domain.ext
    。这应该保护在那里创建的cookie,因为它被视为另一个子域。。(未经测试)谢谢,加布。我想这就是我最终不得不做的,尽管我喜欢将我所有的URL标准化为非www变体(我认为这很难看,但这只是我的观点)。我也更喜欢非www。但是对于这种情况,你无法避免……我怕你会这么说!谢谢你的帮助:)谢谢你,博宾斯。我在想,我们可以在domain.ext上为面向公众(cookie/session–less)的网站提供服务,www.domain.ext 301–连接到domain.ext。然后,我们可以在manage.domain.ext或panel.domain.ext.Yes上托管实际应用程序,如果
    domain.ext
    从不设置cookies,则裸域就可以了。不过有一件事需要注意:虽然
    sub1.domain.ext
    无法从
    sub2.domain.ext
    读取cookie,但它可以在
    domain.ext
    上设置cookie,如果
    sub2.domain.ext
    尚未设置更具体的cookie,则该cookie将由
    sub2.domain.ext
    读取。