ASP.NET - cookieless = UseCookies - 浏览器中只有会话ID?没有客户端cookie?

时间:2012-04-12 14:39:22

标签: asp.net security cookieless

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

我的问题是当我使用cookieless =“UseCookies”时究竟发生了什么。

  1. 会话是否已创建并且某些ID存储在浏览器中(〜稍后用于从IIS服务器端会话“cookie”中提取信息的内存)或者它实际上是配偶创建“常规”客户端加密cookie?
  2. (我显然试图避免写入URL和客户端cookie - 不确定是否可以避免所有这些)

    1. 如果在浏览器中设置ID,则所有浏览器都允许在其中存储会话ID。如果浏览器不允许这样做会发生什么?有没有办法预检?
    2. 所以我想我们所有人都只是想建立适当的安全应用程序,如果有人得到任何其他建议,我将非常感激。

      坦克很多,

1 个答案:

答案 0 :(得分:0)

如果你允许cookie,所以设置cookieless =“false”,sessionID将存储在cookie中,并且在会话的整个过程中都可以访问(默认情况下是20分钟。)

如果您允许使用Cookie并且用户将在浏览器中禁用Cookie,则sessionID将不会存储在任何位置,并且每次用户创建新请求(通过转到另一个页面)时,他都会获得新的sessionID,因此没有数据可以被保存。

您可以使用cookieless =“true”来加密并将sessionID附加到网址,这样即使他的Cookie已启用,用户也可以保留会话。

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

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

我希望这会有所帮助。我个人会告诉用户启用cookie,甚至不担心其他情况,但有些人(例如我的老板)不喜欢这个想法,并希望每个人都支持。