gpt4 book ai didi

c# - 重用 session 标识符

转载 作者:太空狗 更新时间:2023-10-30 00:59:21 24 4
gpt4 key购买 nike

A) 我假设 Asp.Net 允许您仅在我们以无 cookie 模式运行时重用 session 标识符,但如果我们使用 cookie 来存储 session ID 则不允许重用 session 标识符?

B) 来 self 的书:

By default, ASP.NET allows you to reuse a session identifier. For example, if you make a request and your query string contains an expired session, ASP.NET creates a new session and uses that session ID. The problem is that a session ID might inadvertently appear in a public place - such as in a results page in a search engine. This could lead to multiple users accessing the server with the same session identifier and then all joining the same session with the same shared data.”

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

C)继续:

To avoid this potential security risk, it’s recommended that you include the optional regenerateExpiredSessionId attribute and set it to true whenever you use cookieless sessions. This way, a new session ID will be issued if a user connects with an expired session ID. The only drawback is that this process also forces the current page to lose all view state and form data, because ASP.NET performs a redirect to make sure the browser has a new session identifier.


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

谢谢


A) No. When using cookie-based sessions, if a client sends an invalid session ID (from a stale cookie for example), the server will reject the ID, generate a new ID and send that value back in the cookie with the response.

只是为了确保我明白你在说什么:

  • 当 session 基于 cookie 时,如果您发出请求,但您的 cookie 包含一个已过期 session 的 session ID,那么服务器将生成一个新 ID?

  • 但是如果 session 是无 cookie 的(因此 ID 包含在 URL 中),那么默认情况下 Asp.Net 会使用相同的 ID 创建新 session 吗?

C) The redirect is performed to ensure that the client received the new session id value and properly sends it back with the follow-up request. It's just a double-confirmation that occurs.

但为什么不将新的 session ID 放入 URL 中并将其发回。这一定是有原因的,为什么这行不通,因此需要重定向?!

最佳答案

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

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

C) 执行重定向以确保客户端收到新的 session ID 值并正确地将其与后续请求一起发回。这只是发生的双重确认。

关于c# - 重用 session 标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com