出于安全目的,我应该了解哪些 cookie 域和范围?

TLD*_*LDR 5 javascript security cookies multi-tenant

我可以在哪里了解(或了解什么)cookie 的范围,以避免对经过身份验证的用户进行 CSRF 和 XSS 攻击?

例如,如果我有一个多租户系统,其中单个用户可以访问一个或多个站点,那么更安全的是:

  • company1.hoster.com
  • company2.hoster.com
  • company3.hoster.com

或者

  • www.hoster.com/company1
  • www.hoster.com/company2
  • www.hoster.com/company3

如果我在“hoster.com”设置 cookie 会发生什么?

Gum*_*mbo 5

您可以分别限制cookie在域路径中的有效范围。因此,您可以在这两种情况下设置一个仅对特定域/路径组合有效的 cookie:

  1. 仅设置 cookie //company1.example.com/

     Set-Cookie: name=value; Path=/
    
    Run Code Online (Sandbox Code Playgroud)

    省略Domain属性会使 cookie 仅对它所设置的域有效。并且Path=/cookie 对具有前缀 的任何路径都有效/

  2. 仅设置 cookie //example.com/company1/

     Set-Cookie: name=value; Path=/company1/
    
    Run Code Online (Sandbox Code Playgroud)

    与上面示例的解释相同。唯一的限制是您需要使用等效于 的as/company1/来代替as ,从而使 cookie 对于和也有效。/company1Path=/company1Path=//company2/company3

为了避免通过 JavaScript 读取 cookie(减少使用 XSS 访问的资源),请设置HttpOnly属性


Ran*_*e42 0

开放Web 应用程序安全项目发布了大量有关安全 Web 应用程序开发的有价值的信息。

Cookie 具有范围和路径属性,您通常不希望为“/”或通配符主机 *.hoster.com 发出 Cookie,这都是不明智的。

这并不像这个决定那么简单,您在设计中考虑到安全性是件好事,但安全性是一个过程,存在于开发的每个阶段。