提问人:Eli 提问时间:6/30/2009 最后编辑:Eli 更新时间:6/30/2009 访问量:503
IE 会话 Cookie 最近发生了任何更改?
Any recent changes to IE session cookies?
问:
我有一个使用相当通用的身份验证方案的 PHP 站点。
- 整个登录区域都需要 ssl。
- 用户输入他们的用户名和 pw,如果他们与 db 匹配,则启动会话并为他们设置一个值。
- 如果他们尝试访问需要身份验证的页面,它会检查会话中是否存在该值,如果没有,则将其转发到登录页面。
我们总是会遇到一些人无法登录的问题,因为他们没有设置为使用会话 cookie,或者他们在缓存浏览转发页面等方面有问题。
然而,最近,我们有很多IE用户无法登录。修复他们的会话cookie设置和清除缓存没有帮助,但如果他们在同一台计算机上使用firefox / opera,他们可以登录。我很确定这是IE的问题,而不是介于两者之间的任何问题。
有谁知道 IE 7 最近对 IE 7 的任何更改会影响会话 cookie?
更新:
我最近确实在登录后立即实现了 session_regenerate_id() 调用,因为现在在某些情况下,用户可能有一个将要使用的现有会话,但那是很久以前的事了。
答:
0赞
Spencer Ruport
6/30/2009
#1
我什么都没听到。不过,这正是我在所有公共项目中改用无 cookie 会话的原因。我相信 ASP.Net 内置了这一点,但我更喜欢使用我自己的实现。将查询字符串 sessionid 参数从一页传递到另一页,并将其绑定到数据库记录或其他数据存储要可靠得多。
评论
0赞
Jarett Millard
6/30/2009
我可以问一下,你用什么来代替?
0赞
Jarett Millard
6/30/2009
不过,这样做确实会损害安全性。会话 ID 应被视为明文密码,因为当会话处于活动状态时,它基本上就是这样。将它放在查询字符串中会将其保存在各种公共场所:缓存、代理服务器、浏览器历史记录、用户复制/粘贴到论坛的链接等。我宁愿一些用户因为自愿关闭 cookie 而无法使用我的应用程序,也不愿让一些用户的帐户受到损害。
0赞
Eli
6/30/2009
我也喜欢cookie登录。我倾向于保持相当干净的 URL,因为我讨厌将数据显示给临时用户或存储在我不想要的任何地方。虽然我同意,但当事情突然发生变化时,这真的很痛苦......
3赞
Dan Davies Brackett
6/30/2009
#2
我的第一步是找到一个可以使用 Firefox 而不是 IE 登录的用户,然后对两者运行 Fiddler,以查看登录过程的 HTTP 请求/响应对的差异。这至少应该让你更好地了解去哪里看。
1赞
Jarett Millard
6/30/2009
#3
如果 IE 的安全设置被调高(这在企业环境中很常见),或者您登录的页面位于框架或 iframe 中,则可能是阻止 cookie 保存的原因。如果是这种情况,您需要做的就是设置 P3P 策略 HTTP 标头。这是我能找到的关于如何实现它们的最佳描述。
评论
0赞
Eli
6/30/2009
嗯,可能就是这样,因为我们没有 p3p 标头。我会实现它,看看它是否有帮助。
评论