我的Web应用程序使用会话在用户登录后存储有关用户的信息,并在应用程序中从一个页面移动到另一个页面时维护该信息.在这个特定的应用程序,我存储user_id,first_name和last_name人的.
我想在登录时提供"Keep Me Logged In"选项,这将在用户的计算机上放置一个cookie两周,这将在他们返回应用程序时以相同的细节重新启动他们的会话.
这样做的最佳方法是什么?我不想将它们存储user_id在cookie中,因为看起来这样可以让一个用户轻松尝试伪造另一个用户的身份.
我正在MySQL数据库中创建一个表以保存一些会话数据,包括session_id.VARCHAR存储session_id字符串的长度应该是多少?
我正在为用户密码部署经典的哈希保护.登录时提交的密码被加盐,散列,然后与数据库中已存储的散列进行比较.
但是不是使用PHP函数调用来比较现在的散列用户输入和存储的散列,而是在数据库中进行比较 - 更准确地说,使用一个WHERE子句(注意:在比较开始时,盐已经因各种原因而已知) ,但密码不是).
由于用户名是唯一的,因此以下查询有效地告知用户名+密码对是否匹配:
SELECT * FROM `users` WHERE `password`='$password_hash' AND `username`='$username';
Run Code Online (Sandbox Code Playgroud)
这种方法容易受到时间攻击吗?
编辑:SQL注入不是一个问题,它是照顾.