在我的经典 ASP 应用程序中,当客户端关闭浏览器时,与 ASP 会话 ID 相关的 cookie 就会丢失,即使会话没有超时。所以...
即使客户端关闭浏览器,如何使 ASP 会话 ID cookie 保持不变?
当您启动新的浏览器会话并浏览到您的站点时,经典 ASP 将检测到没有 ASP 会话 cookie,并将为您创建一个新会话(正如您已经经历过的那样)。
会话 cookie 就是这样,它们在会话的生命周期内存在。当您关闭浏览器时,会话 cookie 将被删除(即使您在服务器上的会话状态将作为孤立会话继续存在,直到 Session.Timeout 过期 - 除非您在 Session.Timeout 期间再次提供相同的会话 cookie)。
在新的浏览器会话/实例中延长 ASP 会话 cookie 的生命周期的唯一方法是使用浏览器/客户端上的脚本更改 cookie 的生命周期。
如果您希望管理跨事件(例如浏览器关闭)的状态,则需要实现自己的状态管理机制(例如将状态保存到数据库)并使用具有较长生命周期(或具有滑动过期时间)的常规 cookie您可以将服务器端脚本中每个请求的生命周期延长一小部分)以将状态与用户匹配。
Edit:
以下文章有一个修改会话 cookie 的脚本(向下滚动到 Cookie 过期):
-
ASP 会话 Cookie (Plynt) https://web.archive.org/web/20070504042700/http://palisade.plynt.com/issues/2007Feb/asp-session-cookies/,来自 archive.org
但正如 Shoban 正确指出的那样,存在以下风险:会话固定 (OWASP) http://www.owasp.org/index.php/Session_Fixation。但是,您可以采取一些措施来保护自己免受这种情况的影响:
- 会话固定保护 (OWASP) http://www.owasp.org/index.php/Session_Fixation_Protection
我还要添加一些警告,如果您的应用程序正在存储敏感数据(信用卡、财务、医疗等),那么我建议不要这样做,并接受您的用户将不得不再次登录并开始新会话的事实。安全总比后悔好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)