1

我一直在考虑用户身份验证、使用会话/cookies 以及会话劫持带来的安全风险。我知道使用安全的 https:// 是最有效的方法,以及 regenerate_session_id() 和使用随机字符串进行验证(在众多附加程序中)。

我的问题是:是否有可能合并一种放弃会话和 cookie 并仅使用数据库保存变量的方法?

这是我将如何设置它:

- 在用户表中有一个可以保存 IP 地址的列,以及一个布尔值。

-当用户“登录”时,将用户的当前IP地址设置到数据库中,并将布尔值设置为false(如果用户不想被“记住”)或true(如果他们愿意)。

- 在页面加载时,它会检查当前 IP 地址与存储在用户数据库中的 IP 地址。如果匹配,则认为用户有效。

-在窗口关闭时,脚本将清除这些值,用户将被“注销”。

- 如果用户想要“保持登录状态”(我知道这是一个巨大的安全风险),那么切换(布尔值)将简单地停用注销脚本,并且 IP 地址将为用户保留存储。

这种方法的回退是什么?甚至可能吗?

4

3 回答 3

5

IP 地址根本不是唯一识别用户的准确可靠的方法。IP 可能会在会话期间发生变化,并且多个用户代理可能正在使用相同的出站 IP。

对不起 :-)

于 2012-06-18T04:00:59.350 回答
3

我最近在一个系统上看到了这种 IP 检查,它导致了许多用户一直随机断开连接的问题(每当他们的动态 IP 更改时)。只是不要那样做,IP 可以更改,因此您不能依赖它们。

最有可能的是,您应该查看现有的身份验证方法并尝试实现它。把事情简单化。

于 2012-06-18T04:01:35.773 回答
1

现有的“动态IP是一个问题”的答案是绝对正确的。考虑通过 3g 连接的移动设备。每次用户走进新塔的范围时,他们的 IP 都会改变......

于 2012-06-18T04:18:24.030 回答