1

我正在研究 asp.net (4.0) 网站。我试图使用表单身份验证()。显然试图让一些页面安全。我的理解是,最好的安全解决方案是设置 cookieless="UseCookies" 这样它就不会将 id 写入 URL。

我的问题是当我使用 cookieless="UseCookies" 时到底发生了什么。

  1. 会话是否已创建并且某些 id 是否存储在浏览器中(〜内存,稍后用于从 IIS 服务器端会话“cookie”中提取信息)或者它实际上是创建“常规”客户端加密 cookie 的配偶?

(我显然试图避免写入 URL 和客户端 cookie - 不确定是否可以避免所有这些)

  1. 如果它在浏览器中设置 ID,是否所有浏览器都允许在其中存储会话 ID。如果浏览器不允许这样做会发生什么?有没有办法预先检查它?

所以我想和我们所有人一样,我只是在尝试构建适当的安全应用程序,如果有人有任何其他建议,我们将不胜感激。

坦克很多,

4

1 回答 1

1

如果您允许 cookie,那么设置 cookieless="false" sessionID 将存储在 cookie 中,并且在整个会话期间(默认为 20 分钟)都可以访问。

如果您允许 cookie 并且用户将在浏览器中禁用 cookie,则 sessionID 将不会存储在任何地方,并且每次用户创建新请求(通过转到另一个页面)时,他都会获得新的 sessionID,因此无法保留任何数据。

您可以使用 cookieless="true" 加密并将 sessionID 附加到 url,这样即使启用了 cookie,用户也可以保持会话。

还有一个 cookieless="AutoDetect" 将确定用户是否禁用或启用了 cookie,并基于此创建一个带有 sessionID 的 cookie 或将其扔到 URL。这样做的缺点是,对您页面的每个请求都会产生 3 个请求,一个请求确定用户是否启用了 cookie,将查询字符串附加到第一个请求的结果中,第三个请求将用户带到适当的 URL。

还有一个设置可以根据浏览器的数据关闭和打开无 cookie。因此,如果有人使用 10 年前的手机浏览您的页面,它可能会将 cookie 附加到 URL,因为在该设备上没有允许 cookie 的选项。

我希望这有帮助。我个人会向用户发送消息以启用 cookie,甚至不必担心其他情况,但有些人(例如我的老板)不喜欢这个想法并希望得到所有人的支持。

于 2012-04-14T20:26:05.537 回答