我要创建一个登录屏幕。 因此,如果用户输入正确的用户名和密码,我将创建一个这样的会话:
session_start();
$my_session_id = session_id(md5("user's remote ip address") );
然后我要将$ my_session_id保存回用户表。
每次加载页面时,我都会根据数据库中的字段检查session_id(),以验证会话是否良好。
假设数据库是安全的,代码是否足够好且安全?
**编辑:好的,我知道这不安全,但是这个怎么样:
session_start();
session_id();
session_regenerate_id(true);
$new_session_id = session_id();
//save the new_session_id into table
set $_SESSION['user_ip'] = user's remote ip
然后在每个页面上检查$ _SESSION ['user_ip']和session_id对数据库字段
它够好吗? **
答案 0 :(得分:2)
不,它根本不存在。我可以为任何IP重新创建会话ID,从而劫持任何会话。只需保留默认的session_id,确保在登录时始终regenerate(以防止会话固定攻击)并将IP与会话一起存储,以验证会话实际属于用户。
答案 1 :(得分:0)
不,它根本不安全。你为什么要这样做?如果要将会话绑定到IP地址,请将IP存储在会话变量中并进行检查。
答案 2 :(得分:0)
当你开始会话时,它已经创建了自己的会话ID。不建议创建自己的。
如果您想将其存储在表格中,可以通过$sessionId = session_id();
获取并存储在表格中。会更好。
有关详细信息,请访问:http://in3.php.net/session_id
答案 3 :(得分:-1)
您应该检查具有动态IP的用户