关于cookie,我应该知道些什么?

What should I know about cookies domain and scope for security purposes?

本文关键字:什么 cookie 我应该 关于      更新时间:2023-09-26

我在哪里可以了解(或什么是)关于cookie的范围,以避免对已验证用户的CSRF和XSS攻击?

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

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

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

如果我在" host.com "设置一个cookie会发生什么?

可以分别限制cookie在域和路径中的有效范围。所以你可以在这两种情况下设置一个cookie只对特定的域名/路径组合有效:

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

     Set-Cookie: name=value; Path=/
    

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

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

     Set-Cookie: name=value; Path=/company1/
    

    与上面的例子解释相同。唯一的限制是您需要使用/company1/而不是/company1,因为Path=/company1将等同于Path=/,因此将使cookie对/company2/company3也有效。

并且为了避免cookie可以通过JavaScript读取(减少使用XSS访问的资产),设置HttpOnly属性。

Open Web应用程序安全项目发布了许多关于安全Web应用程序开发的有价值的信息。

Cookie有一个作用域和路径属性,你通常不希望为"/"或通配符主机发出Cookie *. host.com都是不明智的。

这并不是一个简单的决定,在设计中考虑安全性是好的,但安全性是一个过程,在开发的每个阶段。