【问题标题】:Is it possible to set an HttpOnly Cookie from one domain to another subdomain是否可以将 HttpOnly Cookie 从一个域设置到另一个子域
【发布时间】:2022-01-20 20:37:04
【问题描述】:

我最初在这里发布了这个问题:https://security.stackexchange.com/questions/255737/is-it-possible-to-set-an-httponly-cookie-from-one-domain-to-another-subdomain

请记住,这个问题是针对将 HttpOnly 标志设置为 true 的 cookie。

我很确定我的问题的答案是否定的,但我一直很难通过官方文档或此处的其他帖子找到答案。这是某些上下文的简单用例:

  1. Python 后端 Web 应用程序 (api.domain.com)
  2. 前端 JavaScript SPA (app.domain.com)
  3. 使用带有正确usernamepassword的axios从app.domain.com发出对@​​987654326@的请求,并在正文中返回带有access JWT令牌的响应,并且响应设置了带有refresh的cookie HttpOnly 标志 [应该失败,因为我相信无法在 app.domain.com 上从 API 请求到 api.domain.com 设置 cookie? -- 这是我的问题]
  4. access 令牌存储在内存中,并随每个 API 请求一起传递
  5. api.domain.com/api/auth/refresh/ 发出的请求会按计划发送以刷新短暂的access 令牌。

我通常将前端应用程序和后端应用程序托管在同一个子域 (app.domain.com) 上,并使用 CloudFront 或 nginx 之类的东西进行基于路径的路由,这很有效。例如,所有以/api/* 开头的请求都发送到后端,所有其他请求都发送到前端应用程序。无论我使用什么选项在服务器上设置 cookie,尝试为 API 使用单独的子域似乎都失败了。

谁能帮我确认实际上不可能通过api.domain.com 上托管的 API 请求在 app.domain.com 之类的子域上设置 HttpOnly cookie?如果有人也可以帮助我找到可以在官方文档中找到的位置,那就太好了。

搜索set httpOnly cookie across subdomains,我没有找到任何直接相关的内容。我也没有在这些资源中找到直接回答我问题的任何内容:

https://owasp.org/www-community/HttpOnly

https://docs.microsoft.com/en-us/previous-versions//ms533046(v=vs.85)?redirectedfrom=MSDN

【问题讨论】:

    标签: authentication cookies single-page-application httponly cookie-httponly


    【解决方案1】:

    这是可能的。其实我就是这么做的。

    在您的前端,使用 Axios:

    const baseURL = 'https://api.example.com';
    
    const api = axios.create({
      baseURL,
      withCredentials: true,
    });
    

    在您的后端,使用 Express:

    app.use(
      cors({
        origin: 'https://www.example.com',
        credentials: true,
      }),
    );
    
    app.post('/login', async (req, res) => {
      res.cookie('someCookie', someCookieValue, {
        secure: true,
        domain: 'example.com',
        httpOnly: true,
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2020-09-06
      • 2022-09-23
      • 1970-01-01
      相关资源
      最近更新 更多