Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重用会话标识符_C#_.net_Asp.net - Fatal编程技术网

C# 重用会话标识符

C# 重用会话标识符,c#,.net,asp.net,C#,.net,Asp.net,A) 我假设Asp.Net仅在我们以无Cookie模式操作时允许您重用会话标识符,但在我们使用Cookie存储会话ID时不允许重用会话标识符? B) 从我的书中: 默认情况下,ASP.NET允许您重用会话标识符。例如,如果您发出请求,并且查询字符串包含过期会话,ASP.NET将创建一个新会话并使用该会话ID。问题是会话ID可能会无意中出现在公共场所,例如搜索引擎的结果页面中。这可能导致多个用户使用相同的会话标识符访问服务器,然后所有用户都使用相同的共享数据加入相同的会话。” 我不确定我是否理解

A) 我假设Asp.Net仅在我们以无Cookie模式操作时允许您重用会话标识符,但在我们使用Cookie存储会话ID时不允许重用会话标识符?

B) 从我的书中:

默认情况下,ASP.NET允许您重用会话标识符。例如,如果您发出请求,并且查询字符串包含过期会话,ASP.NET将创建一个新会话并使用该会话ID。问题是会话ID可能会无意中出现在公共场所,例如搜索引擎的结果页面中。这可能导致多个用户使用相同的会话标识符访问服务器,然后所有用户都使用相同的共享数据加入相同的会话。”

我不确定我是否理解重用会话标识符如何导致会话ID出现在搜索引擎的结果页面中

C) 继续:

为了避免这种潜在的安全风险,建议您包括可选的regenerateExpiredSessionId属性,并在使用无cookieless会话时将其设置为true。这样,如果用户使用过期的会话ID进行连接,将发出新的会话ID。唯一的缺点是,此过程还强制当前页面丢失所有视图状态和表单数据,因为ASP.NET执行重定向以确保浏览器具有新的会话标识符


为什么需要Asp.Net执行重定向以确保浏览器具有新的会话标识符?难道它不能从URL中提取会话ID并将其丢弃吗?

多谢各位


A) 否。当使用基于cookie的会话时,如果客户端发送无效的会话ID(例如,来自过时的cookie),服务器将拒绝该ID,生成新ID,并将该值与响应一起发送回cookie

为了确保我理解你的意思:

  • 当会话是基于cookie的,并且如果您发出请求,但cookie包含已过期会话的会话Id,则服务器将生成一个新Id

  • 但若会话是无cookieless(所以ID包含在URL中),那个么默认情况下Asp.Net将使用相同的ID创建新会话

C) 执行重定向是为了确保客户端接收到新的会话id值,并将其与后续请求一起正确发送回。这只是一个双重确认

但为什么它不把新的会话ID放在URL中并发送回去呢。必须有一个原因,为什么这不会工作,因此重定向是必要的

A)否。当使用基于cookie的会话时,如果客户端发送无效的会话ID(例如,来自过时的cookie),服务器将拒绝该ID,生成新ID,并将该值与响应一起发送回cookie中

B) 当使用无cookie会话时,搜索引擎很可能会使用植入URL的会话ID对页面进行索引。在这种情况下,如果用户单击搜索引擎中的链接(regenerateExpiredSessionid为“true”),则将使用相同的ID创建新会话。如果后续用户单击链接,并且如果多个用户同时使用相同的ID浏览,则也会重新使用相同的ID,它们将在每个请求中覆盖彼此的会话值

C) 执行重定向是为了确保客户端接收到新的会话id值,并将其与后续请求一起正确发送回。这只是一个双重确认