我应该使用哪种方法来登录我的用户,例如谷歌的Gmail? (如果您愿意,您可以保持几乎无限时间登录 - 保持登录功能 - 即使您的IP在会话中间更改,gmail仍然可以识别您的身份)。
PHP会话持续到浏览器关闭(或1440秒),即使使用session_set_cookie_parameters()
我也不知道这是不是一个好习惯。我宁愿使用MySQL
表。一个用于用户登录尝试,一个用于会话,但我想知道如何实现此目的。
如何识别用户? IP不好,它可以改变,如果用户使用代理怎么办?我想要的只是使用安全便捷的方式。
让我们放下Network Eavesdropping
和Cross-site Scripting
,我会尽最大努力对付这些攻击。使用登录尝试日志记录会拒绝暴力攻击,并且我使用预准备语句不能注入sql。
我的另一个问题是,如果我想要一个自己的登录系统,如何防止会话劫持?
答案 0 :(得分:0)
我使用第二个特定的cookie(即不是会话cookie),名为 ALWAYS
遵循以下算法
user_login() {
if ( not signed in ) {
if (cookies[ALWAYS] is present AND value is in DB AND not null) {
log the user from that row , automatically
create his session
}
else {
regular_login()
}
}
}
当用户注销时,删除cookie ALWAYS,并在DB中将该值设置为 null
这样,以前登录的用户(会议一年,可以更改)在会话过期时自动从最初登录的同一浏览器登录。
当用户退出时,通过从DB中删除值来删除被盗(...)的cookie的可能性。因此,即使它可能被盗,也不能再使用了。