设为首页收藏本站
查看: 114|回复: 0

[PHP] phpsession使用与安全-PHP源码

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2018-7-16 19:31:00 | 显示全部楼层 |阅读模式
    session基本用法实例
    代码如下:
      

    2.3 使用session函数控制页面缓存.
    很多情况下,我们要确定我们的网页是否在客户端缓存,或要设置缓存的有效时间,
    比如我们的网页上有些敏感内容并且要登录才能查看,如果缓存到本地了,可以直
    接打开本地的缓存就可以不登录而浏览到网页了.
    使用session_cache_limiter('private');可以控制页面客户端缓存,必须在
    session_start()之前调用.
    端缓存控制.
    控制客户端缓存时间用session_cache_expire(int);单位(s).也要在
    session_start()前调用.
    这只是使用session的情况下控制缓存的方法,我们还可以在header()中控制控制
    页面的缓存.
    2.4 删除session
    要三步实现.

    (session_name(),'',time()-3600); // 第二步: 删除实际的session:
    $_SESSION= array(); // 第三步: 删除$_SESSION全局变量数组?>
    2.5 session在PHP大型web应用中的使用对于访问量大的站点,用默认的session存
    贮方式并不适合,目前最优的方法是用数据库教程存取session.这时,函数bool
    session_set_save_handler( callbackopen, callbackclose, callbackread,
    callbackwrite, callbackdestroy, callbackgc )就是提供给我们解决这个问题
    的方案.
    该函数使用的6个函数如下:
    1. bool open() 用来打开会话存储机制,
    2. bool close() 关闭会话存储操作.
    3. mixde read() 从存储中装在session数据时使用这个函数4. bool write() 将
    给定session ID的所有数据写到存储中5. bool destroy() 破坏与指定的会话ID
    相关联的数据6. bool gc() 对存储系统中的数据进行垃圾收集例子见php手册
    session_set_save_handler() 函数.
    如果用类来处理,用session_set_save_handler(
    array('className','open'),
    array('className','close'),
    array('className','read'),
    array('className','write'),
    array('className','destroy'),
    array('className','gc'),
    )
    调用className类中的6个静态方法.className可以换对象就不用调用静态方法,但
    是用静态成员不用生成对象,性能更好.
    2.6 常用session函数:
    bool session_start(void); 初始化session
    bool session_destroy(void): 删除服务器端session关联文件。
    stringsession_id() 当前session的id
    stringsession_name() 当前存取的session名称,也就是客户端保存session ID的
    COOKIE名称.默认PHPSESSID。arraysession_get_COOKIE_params() 与这个
    session相关联的session的细节.
    stringsession_cache_limiter() 控制使用session的页面的客户端缓存ini
    session_cache_expire() 控制客户端缓存时间bool session_destroy() 删除服
    务器端保存session信息的文件void session_set_COOKIE_params( int lifetime
    [, stringpath [, stringdomain [, bool secure [, bool httponly]]]] )设置
    与这个session相关联的session的细节bool session_set_save_handler(
    callbackopen, callbackclose, callbackread, callbackwrite,
    callbackdestroy, callbackgc )定义处理session的函数,(不是使用默认的方式)
    bool session_regenerate_id([bool delete_old_session]) 分配新的session
    id
    2.7 session安全问题攻击者通过投入很大的精力尝试获得现有用户的有效会话
    ID,有了会话id,他们就有可能能够在系统中拥有与此用户相同的能力.
    因此,我们主要解决的思路是效验session ID的有效性.

    ['HTTP_USER_AGENT'];
    }
    /* 如果用户session ID是伪造*/elseif($_SESSION['user_agent'] !=
    $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) {
    session_regenerate_id();
    }
    ?>
    2.8 Session通过COOKIE传递和通过SID传递的不同:
    在php5.2.1的session的默认配置的情况下,当生成session的同时,服务器端将在
    发送header set-COOKIE同时生成预定义超级全局变量SID(也就是说,写入COOKIE
    和抛出SID是等价的.),当$_COOKIE['PHPSESSID']存在以后,将不再写入COOKIE,也
    不再生成超级全局变量SID,此时,SID将是空的.
    2.9 session使用实例
    ['user_agent'] != MD5($_SERVER['REMOTE_ADDR']
    . $_SERVER['HTTP_USER_AGENT'])) {
    session_regenerate_id();
    }
    }
    /**
    * 销毁session
    * 三步完美实现,不可漏*
    */functionsessionDestroy() {
    session_destroy();
    setCOOKIE(session_name(),'',time()-3600);
    $_SESSION= array();
    }
    ?>
    [/td] [/tr] [/table]
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表