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

时间:2011-04-15 13:57:45

标签: 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会怎样?

2 个答案:

答案 0 :(得分:3)

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

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

    Set-Cookie: name=value; Path=/
    

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

  2. 仅为/设置Cookie:

    //example.com/company1/

    与上述示例相同的解释。唯一的限制是您需要使用Set-Cookie: name=value; Path=/company1/ 而不是/company1/,因为/company1等同于Path=/company1,因此会使Cookie对Path=/也有效和/company2

  3. 为避免可以通过JavaScript读取cookie(减少使用XSS访问的资产),请设置HttpOnly attribute

答案 1 :(得分:0)

Open Web application security project发布了许多有关安全Web应用程序开发的宝贵信息。

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

这并不像这一个决定那么简单,你想到设计的安全性是好的,但在开发的每个阶段,安全都是一个过程。