有关使用 ASP.NET 和 IIS 的路径属性保护 cookie 的信息

有关使用 ASP.NET 和 IIS 的路径属性保护 cookie 的信息

我需要帮助保护我的 Web 应用程序的 Cookie。它部署在 IIS 中,并内置于 ASP.NET MVC 中。这些是我需要获取更多信息的内容

  1. IIS 管理器中的站点文件夹也是一个虚拟目录吗?
  2. 如果 Sites 不是虚拟目录,那么 a. 如果网站直接部署在 IIS 管理器的 Sites 文件夹下,那么它是否真的容易受到同一 Sites 文件夹下其他不安全应用程序的攻击?或者 b. 是否仅在虚拟目录的情况下才存在漏洞?

  3. 默认情况下,所有 Cookie 的路径属性都指向根目录,其值为“/”。它是否指向站点下的 Web 应用程序的层次结构级别,是否会影响其他非安全应用程序?或者它是否仅指向为其创建 Cookie 的 Web 应用程序?

读完这篇文章后,我提出了上述问题。只需在页面上查找路径属性即可。

如果我真的需要设置 cookies 路径,那么还有一件事,即它们是通过我的 Web 应用程序自动生成的,例如会话 ID、防伪造令牌。因此我无法在它们上设置 Path 属性,因为我不是通过 HttpCookie 对象创建它们的。

我尝试通过谷歌搜索来收集尽可能多清晰的解释,但很难获得清晰的流程。

答案1

在 IIS 管理器中,“站点”既不是虚拟目录,也不是“文件夹”。它是一个节点。它下面是 IIS 中定义的所有单个网站。仅凭这一点并不能传达有关是否可以跨站点共享 cookie 的具体信息。

浏览器决定通过哪个请求发送哪些 cookie,并不关心您如何在 IIS 中定义站点,也不关心这些站点下的虚拟目录……它只关心特定请求的属性以及它所存储的 cookie 集的属性,并通过将请求的属性与 cookie 的属性进行比较来决定发送哪些 cookie。

它可能涉及的一些具体属性:请求的域或地址、请求的路径、请求的协议、设置 cookie 的域或地址、cookie 的域属性、cookie 的路径属性以及 cookie 上的安全标志。

这些值可能只映射到 IIS 中的单个站点,或者当您使用子域设置站点时,它们可能映射到多个站点。因此,没有通用规则。您必须检查您的配置以确定哪些站点将匹配任何给定的 cookie 来源。

相关内容