没有Cookie 的 ASP.NET(2)
下面的代码中断了该会话:
<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 分钟以内有助于保护您的用户和站点的安全。
关于作者
Dino Esposito 是 Wintellect 的讲师和顾问,他居住在意大利。他是 Programming Microsoft ASP.NET 以及更新的 Introducing Microsoft ASP.NET .0(两者都由 Microsoft Press 出版)的作者,他的大多数时间都用来讲授有关 ASP.NET 和 ADO.NET 的课程以及在会议上发表讲演。请在 http://weblogs.asp.net/despos 浏览 Dino 的网络日记。
Tag: cookie
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。