是session_id(md5(ip-address))足够安全吗?

时间:2013-08-08 13:45:23

标签: php security session sessionid

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

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 个答案:

答案 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的用户