【发布时间】:2013-08-08 22:04:41
【问题描述】:
我将创建一个登录屏幕。 因此,如果用户输入正确的用户名和密码,我将创建一个这样的会话:
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 与数据库字段
够好吗? **
【问题讨论】:
-
否;显然不是。数百个用户可以共享同一个 IP 地址。
-
不,在 NAT 的情况下非常危险。
标签: php security session sessionid