正在阅读:无 Cookie 的 ASP.NET无 Cookie 的 ASP.NET

2005-08-01 10:15 出处: 作者:Dino Esposito 责任编辑:moningfeng

  使用无 Cookie 会话还会引起与链接有关的问题。例如,您不能在 ASP.NET 页中具有绝对的、完全限定的链接。如果您这样做,那么源自该超链接的每个请求都将被视为新会话的一部分。无 Cookie 会话要求您总是使用相对 URL,就像在 ASP.NET 回发中一样。仅当您可以将会话 ID 嵌入到 URL 中时,您才可以使用完全限定的 URL。但是,既然会话 ID 是在运行时生成的,那么您如何才能做到这一点呢?

  下面的代码中断了该会话:

  <a runat="server" href="/test/page.aspx">Click</a>


  要使用绝对 URL,可以借助于一个小技巧,即,使用 HttpResponse 类上的 ApplyAppPathModifier 方法:

<a runat="server" href=<% =Response.ApplyAppPathModifier("/test/page.aspx")%> >Click</a>


  ApplyAppPathModifier 方法采用一个表示 URL 的字符串作为参数,并且返回一个嵌入了会话信息的绝对 URL。例如,当您需要从 HTTP 页重定向到 HTTPS 页时,该技巧尤其有用。最后,请特别注意,每当您在同一个浏览器内部键入指向某个站点的路径时,您都将丢失无 Cookie 会话的状态。还要请您注意的是,对于移动应用程序,如果设备无法处理专门格式化的 URL,则无 Cookie 会话可能会出现问题。


  小结
  ASP.NET 中存在无 Cookie 会话的主要原因是用户(无论出于什么原因)可能在他们的浏览器中禁用了 Cookie。如果您的应用程序需要会话状态,那么无论您是否喜欢,您都必须面对这种情况。无 Cookie 会话将会话 ID 嵌入到 URL 中,并且得到了双重结果。一方面,它们为 Web 站点提供了一种正确标识发出请求的用户的方式。然而,另一方面,它们使会话 ID 清楚地显现在潜在的攻击者面前,从而使攻击者可以轻松地窃取它并以您的身份进行操作。

  要实现无 Cookie 会话,您无需修改自己的编程模型 — 只需在 web.config 文件中进行简单更改,就可以完成相关工作 — 但是,还要强烈建议您重构您的应用程序,以免在会话状态中存储有价值的信息。同时,将会话的生存期缩短至默认的 20 分钟以内有助于保护您的用户和站点的安全。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品