session会话跟踪技术

来源:互联网 发布:网络市场环境分析 编辑:程序博客网 时间:2024/06/06 08:39
本文仅供学习和参考

HTTP是一种无连接的协议,如果一个客户端只是单纯地请求一个文件(HTML或GIF),服务器端可以响应给客户端,并不需要知道一连串的请求是否来自于相同的客户端,而且也不需要担心客户端是否处在连接状态。但是这样的通信协议使得服务器端难以判断所连接的客户端是否是同一个人。当进行Web程序开发时,我们必须想办法将相关的请求结合一起,并且努力维持用户的状态在服务器上,这就引出了会话追踪(session tracking)。


1、会话与会话跟踪
session中文经常翻译为“会话”,其本来的含义是指有始有终的一系列动作或消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。
session tracking(会话追踪)是指一类用来在客户端与服务器之间保持状态的解决方案,简单地说,当一个客户在多个页面间切换时,服务器会保存该用户的信息。

实现session跟踪的4种方式
1)使用持续Cookies。(persistent Cookies)
    优缺点:虽然Cookie强大且持续性高,但是由于有些用户因为担心Cookie对个人隐私的威胁,会关闭Cookie,一旦如此,便无法利用Cookie来达到会话追踪的功能。
2)重写包含额外参数的URL。(URL rewriting)
    缺点:
        1. 必须对所有指向您的网站的URL进行编码。2. 所有页面必须动态生成。3. 不能使用预先记录下来的URL进行访问,或者从其他网站链接进行访问。
3)建立含义数据的隐藏表单字段。(Hidden Form Field)
    缺点:一旦session数据储存在隐藏字段中,就仍然有暴露数据的危机,因为只要用户直接观看HTML的源文件,session数据将会暴露无疑。这将造成安全上的漏洞,特别当用户数据是依赖于用户ID、密码来取得的时候,将会有被盗用的危险。另外这种方法只适用特定的一个流程,不适用于通常意义的会话跟踪
4)使用内建HttpSession对象
    注意:1. 设置session时间期限setMaxInactiveInterval(int secondsToLive)。2. 进行forward或redirect时必须调用response.encodeURL()或response.encodeRedirectURL()方法,这两个方法首先判断Cookies是否被浏览器支持;如果支持,则参数URL被原样返回,session ID将通过Cookies来维持。



原创粉丝点击