session_id(md5(ip地址))是否足够安全


is session_id(md5(ip-address)) secure enough?

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

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重新创建会话id,从而劫持任何会话。只需保留默认session_id,确保在登录时始终重新生成它(以防止会话固定攻击),并将IP与会话一起存储,以验证会话是否真正属于用户。

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

当您启动会话时,它已经创建了自己的会话id。不建议创建自己的会话。

若要将其存储在表中,可以通过$sessionId = session_id();获取并存储在表内。它会更好。

有关更多信息,您可以访问:http://in3.php.net/session_id

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