C# 重用会话标识符
A) 我假设Asp.Net仅在我们以无Cookie模式操作时允许您重用会话标识符,但在我们使用Cookie存储会话ID时不允许重用会话标识符?C# 重用会话标识符,c#,.net,asp.net,C#,.net,Asp.net,A) 我假设Asp.Net仅在我们以无Cookie模式操作时允许您重用会话标识符,但在我们使用Cookie存储会话ID时不允许重用会话标识符? B) 从我的书中: 默认情况下,ASP.NET允许您重用会话标识符。例如,如果您发出请求,并且查询字符串包含过期会话,ASP.NET将创建一个新会话并使用该会话ID。问题是会话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创建新会话