不接受外部创建的会话标识符

时间:2010-07-29 09:42:51

标签: php

我们可以停止接受外部创建的会话标识符..

谢谢

2 个答案:

答案 0 :(得分:3)

如果人们传入他们自己的会话标识符,那么无论如何它只会是有效的。你已经受到保护了。

答案 1 :(得分:1)

  • 确保会话仅从Cookie启动。
  • 添加/更新身份验证信息时使用session_regenerate_id()
  • 添加一个内部检查,将session_id,remote_addr和user_agent的哈希值与当前存储的哈希值(在会话数据中)进行比较,例如:

    在session_start();
    if(空($ _ SESSION ['auth_hash'])){
        //新访客
        $ _SESSION ['auth_hash'] = sha1(session_id()。'SECRET_STRING'。$ _SERVER ['REMOTE_ADDR']);
    }
    if($ _SESSION ['auth_hash']!= sha1(session_id()。'SECRET_STRING'。$ _SERVER ['REMOTE_ADDR'])){
        //无效的用户/ mitm-attack
        session_destroy();
        //显示登录等等 }

  • 添加/更新身份验证信息后
  • ,例如:

    session_regenerate_id();
    $ _SESSION ['auth_hash'] = sha1(session_id()。'SECRET_STRING'。$ _SERVER ['REMOTE_ADDR']);

@Daniel:这不是真的,将自己的值分配给会话cookie将创建该会话,并且当该会话已经存在时,WILL将使用该会话。如果像我上面提到的那样的措施是使用nog,会话接管和mitm攻击是可能的......