【问题标题】:PHP user authentication using database and ip address?使用数据库和IP地址的PHP用户身份验证?
【发布时间】:2012-06-20 01:31:34
【问题描述】:

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

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

以下是我的设置方式:

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

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

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

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

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

这种方法的回退是什么?有没有可能?

【问题讨论】:

  • 动态和共享 IP 会导致严重的问题是这种方式
  • 是的,我曾希望有一种方法可以专门识别计算机,但我很快意识到这样的概念不可能安全地工作,更不用说一致了。

标签: php ip-address session-cookies authentication


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    很可能,您应该查看现有的身份验证方法并尝试实现它。保持简单。

    【讨论】:

    • 啊,我对动态 IP 地址功能的理解充其量是微不足道的。谢谢你的信息!
    【解决方案3】:

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

    对不起:-)

    【讨论】:

    • 感谢您提供的信息,我想如果它没有任何后备,每个人都会这样做。我会回去做同样的事情!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2011-04-08
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多