0

我将创建一个登录屏幕。因此,如果用户输入正确的用户名和密码,我将创建一个这样的会话:

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 对数据库字段

够好吗?**

4

4 回答 4

2

不,根本不是。我可以为任何 IP 重新创建会话 ID,从而劫持任何会话。只需保留默认 session_id,确保在登录时始终重新生成它(以防止会话固定攻击)并将 IP 与会话一起存储,以验证会话实际上属于用户。

于 2013-08-08T13:49:12.313 回答
0

不,它根本不安全。你为什么要这样做?如果要将会话绑定到 IP 地址,请将 IP 存储在会话变量中并检查它。

于 2013-08-08T13:48:39.243 回答
0

当您开始会话时,它已经创建了自己的会话 ID。不建议自己创建。

如果您想将其存储在表中,您可以获取$sessionId = session_id(); 并存储在表中。会好起来的。

欲了解更多信息,您可以访问:http: //in3.php.net/session_id

于 2013-08-08T13:49:25.157 回答
-1

您应该检查具有动态 IP 的用户

于 2013-08-08T13:49:11.293 回答