我需要帮助保护我的 Web 应用程序的 Cookie。它部署在 IIS 中,并内置于 ASP.NET MVC 中。这些是我需要获取更多信息的内容
- IIS 管理器中的站点文件夹也是一个虚拟目录吗?
如果 Sites 不是虚拟目录,那么 a. 如果网站直接部署在 IIS 管理器的 Sites 文件夹下,那么它是否真的容易受到同一 Sites 文件夹下其他不安全应用程序的攻击?或者 b. 是否仅在虚拟目录的情况下才存在漏洞?
默认情况下,所有 Cookie 的路径属性都指向根目录,其值为“/”。它是否指向站点下的 Web 应用程序的层次结构级别,是否会影响其他非安全应用程序?或者它是否仅指向为其创建 Cookie 的 Web 应用程序?
读完这篇文章后,我提出了上述问题。只需在页面上查找路径属性即可。
如果我真的需要设置 cookies 路径,那么还有一件事,即它们是通过我的 Web 应用程序自动生成的,例如会话 ID、防伪造令牌。因此我无法在它们上设置 Path 属性,因为我不是通过 HttpCookie 对象创建它们的。
我尝试通过谷歌搜索来收集尽可能多清晰的解释,但很难获得清晰的流程。
答案1
在 IIS 管理器中,“站点”既不是虚拟目录,也不是“文件夹”。它是一个节点。它下面是 IIS 中定义的所有单个网站。仅凭这一点并不能传达有关是否可以跨站点共享 cookie 的具体信息。
浏览器决定通过哪个请求发送哪些 cookie,并不关心您如何在 IIS 中定义站点,也不关心这些站点下的虚拟目录……它只关心特定请求的属性以及它所存储的 cookie 集的属性,并通过将请求的属性与 cookie 的属性进行比较来决定发送哪些 cookie。
它可能涉及的一些具体属性:请求的域或地址、请求的路径、请求的协议、设置 cookie 的域或地址、cookie 的域属性、cookie 的路径属性以及 cookie 上的安全标志。
这些值可能只映射到 IIS 中的单个站点,或者当您使用子域设置站点时,它们可能映射到多个站点。因此,没有通用规则。您必须检查您的配置以确定哪些站点将匹配任何给定的 cookie 来源。