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

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

  Cookies 是不是一个问题?
  多年以来,Cookie 只被视为一种技术功能,并且在很大程度上被忽略了。几年以前,针对 Web 安全的世界范围的浪潮将人们的注意力集中于 Cookie 身上。Cookie 被断定包含危险的程序,它们甚至能够超出计算机的物理边界来窃取有价值的信息。

  不言而喻,Cookie 不是程序,因而无法自行收集任何信息 — 更不用说有关用户的任何个人信息。更加清楚的是,Cookie 是 Web 站点可以放置在用户的计算机中以便以后检索和重用的一段文本。所存储的信息是由无害的名称-值对组成的。

  要点在于,Cookie 不是标准 HTTP 规范的一部分,因此它们意味着浏览器和 Web 站点之间的一种协作。并非所有浏览器都支持 Cookie,而且更为重要的是,并非所有用户都在他们自己的浏览器副本中启用 Cookie 支持。

  在历史上,有一些 Web 站点功能是如此紧密地与 Cookie 相联系,以至于很难区分究竟是哪个功能最先出现。一方面,用 Cookie 对会话状态管理和用户身份验证进行编码要容易得多。另一方面,如果您观察一下站点与用于访问页的浏览器有关的统计信息,那么您可能会惊讶地发现,相当一部分用户在连接时禁用了 Cookie。这一点会对开发人员有所启示。

  总而言之,Cookie 本身并不是问题,但它们的使用无疑给予一些服务器代码在客户端计算机中存储一段数据的能力。这预示着一些潜在的安全风险和一种不够理想的总体状况。(在某些地区中,应用程序要求 Cookie 工作甚至是非法的。)


  进入无 Cookie 会话
  在 ASP.NET 中,无需使用 Cookie,就可以有选择地建立必要的会话-用户联系。非常有趣的是,除了以下配置设置以外,您无需在 ASP.NET 应用程序中更改任何内容即可启用无 Cookie 会话。

  <sessionState cookieless="true" />

  ASP.NET 会话状态的默认设置是在 machine.config 文件中定义的,并且可以在应用程序根文件夹中的 web.config 文件中重写。通过确保上述行出现在根 web.config 文件中,您可以启用无 Cookie 会话。就是这样 — 简单而有效!

  <sessionState>节点还可以用于配置会话状态管理的其他方面,包括存储介质和连接字符串。但是,就 Cookie 而言,只需您将 cookieless 属性设置为 true(默认设置为 false)。

  请注意,会话设置是应用程序范围的设置。换句话说,您站点中的页要么都将使用要么都将不使用 Cookie 来存储会话 ID。

键盘也能翻页,试试“← →”键

关注我们

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