11

我有一个登录系统。如何使用 cookie实现安全的记住我的系统。

我应该在 cookie 用户名和密码中存储什么值,但如何保护它?

4

4 回答 4

1

然后在 db 中定义一个 Salt foreach 用户

关于设置

$expire_time = time() + 2 * 7 * 24 * 3600; // 2 weeks exp time

setcookie( 
    "rememberMe",
    crypt($username, $salt),
    $expire_time,
    '/'
);

在验证

$_COOKIE['rememberMe'] === crypt($username, $salt)
于 2015-08-15T18:09:21.553 回答
0

也许您可以创建一个 16 字符的字母/数字字符串,该字符串在数据库中与该用户和 mac 地址相关联,以便(只要人们不太努力和欺骗 mac)只有该机器可以登录。

于 2010-09-05T07:51:45.303 回答
0

也许您应该存储(在您的数据库中)访问者 IP、用户代理、时区或已安装的插件。使用 Javascript 可能很容易获得一些东西,因为获取 MAC 地址可能是一个问题。

然后您可以轻松地检查用户是否具有与上次相同的 IP、UA、时区或插件 :) 或者您可以使用 MaxMind 检查他的位置并确认他是否使用了正确的时区。如果有任何可疑之处,您应该丢弃 cookie 凭据。

于 2015-08-12T12:27:00.727 回答
-1

没什么大不了的...不要让您的会话文件被清理(ini设置session.gc_probability = 0),并将会话cookie从临时更改为永久(ini设置session.cookie_lifetime = however_long_you_want_the_user_to_be_remembered)。

当然,您可能希望最终清理陈旧的会话文件,因此您可以尝试以非常低的可能性进行清理,或者进行一些外部清理。无论哪种方式,只要用户保留会话 cookie 而您保留会话文件,它们就会被“记住”。

于 2010-09-05T07:38:40.593 回答