8

我有两个 ASP.Net 应用程序驻留在服务器上的两个不同文件夹中:

  • /Foo<-- 这是标准的不安全应用程序
  • /Secure<-- 这是一个单独的应用程序,需要 IIS 使用 SSL

问题是,默认情况下,ASP.NET_SessionIdcookie 是在域上指定的,并且在不同目录中的两个应用程序之间共享。我需要不同的会话 cookie,因为我不能允许使用被劫持的 cookie/Foo来授予对/Secure应用程序的访问权限。

理想情况下,我希望每个应用程序的 cookie 都受 cookiePath属性的限制。开箱即用的.Net 显然没有办法做到这一点。

更令人头疼的是,即使我编写自定义代码来设置 cookie 路径,我也担心某些浏览器区分大小写并且不会对 and 使用相同的会话 cookie /Foo/foo这取决于链接的构建方式,可以导致同一应用程序中的多个会话。

有没有人遇到并克服了这个问题?

4

4 回答 4

12

在 .Net 2.0 及更高版本中,您可以将 web.config 中“sessionState”XML 元素的“cookieName”属性设置为每个应用程序的不同值。这将阻止他们使用相同的会话 ID。

这是 MSDN 参考。

于 2008-11-19T15:36:06.560 回答
1

检查/SecureIIS 中文件夹的图标。

如果它有一个齿轮图标,那么它是一个单独的应用程序,会话应该不同,应用程序将在它自己的 appdomain 中运行。

如果它是一个地球图标,那么它就是一个虚拟目录,将与根站点共享相同的会话,并且/Foo.

于 2008-11-19T15:26:30.667 回答
1

如果您使用表单身份验证,那么您还需要更改 web.config 中的表单 cookie:

<forms name="Foo"...
<forms name="Secure"...
于 2012-08-08T08:04:17.307 回答
0

听起来它们只是在不同的虚拟目录中,但仍在同一个应用程序池中。如果您真的希望应用程序分开,请尝试为您的 /secure 应用程序创建另一个应用程序池。

于 2008-11-19T15:16:26.540 回答