Apache为使用进程跟踪(session tracking)提供了灵活的选择,你有很多第三方的解决方案可供使用。跟踪Web进程主要有两种机制:URL-改写(URL-rewrite)和cookie。每种方法都有自己的优点和劣势,但是两种方法使用起来都很简单。还有很多使用或进行安全防护的方法可供你选择。
Apache的进程跟踪方法
根据Apache版本的不同,你有几种进程跟踪的选择。这些选择都提供了非常强的灵活性,所以你需要进行仔细地准备和检查(除了本文,还需要进行更多的研究):
Apache::Session (mod_perl)--这种跟踪机制,和mod_perl共同工作,有几个非常强大的功能。这些功能包括了一个能够管理跟踪配置和执行流程的界面;在进程数据库里生成包含hash-tag, -type,和-class安全特性进程ID 以帮助处理进程数据;在协调进程文件共享以保证进程跟踪数据的同时提供日志存储数据结构的选择(也就是说你可以创建一个进程跟踪数据库)。
mod_php--它同Apache Session的功能非常相似,包括进程ID生成和存储功能。它还有一项非常有用的功能,当客户端的浏览器不允许使用cookie时,它能够被动地执行URL-rewrite。和Apache Session一起,它能够为跟踪数据存储提供一些数据结构供选择,包括创建一个进程跟踪数据库。
mod_php 跟踪实例
下面的过程非常典型,也很清晰:
1.一个客户端发出一个请求,mod_php寻找一个进程ID。如果没有,它就会尝试去创建一个cookie或者进行一次URL改写。
2.一个PHP进程处理程序允许服务器管理员为进程跟踪数据设定特定的元素;当任何网站功能被访问(也就是当网页上的任何内容被点击时),所有的非空变量都被存储在以这次进程进行命名的一个文件中。
3.同一个用户接下来所发生的对网页的调用,先前存储的数据可以立刻被引用,这些信息能够被提交给浏览器的代码使用,从而生成动态的、用户个性化的页面内容/功能。
现在,就有一些很棒的原始素材了。通过使用这样的机制,客户在你的网页上会获得绝对个性化的体验,而且速度就和HTTP所能达到的相差无几!通过对文件php.ini进行调整,mod_php的可配置能力得到了进一步的加强。它们包括(你将在进程跟踪文件中看见它们):
利用cookie进行进程ID存储。
为cookie命名,设定它的最小生命周期,域和路径。
对文件名和目录进行进程存储。
URL格式化
高速缓存选项
对付URL盗窃(URL theft)的反盗窃功能
mod_session
如果你使用的是Apache 1.3.x,你可以在进程跟踪里使用mod_session module。和mod_php相类似,该模块同样不会允许没有被指定进程ID的用户的请求通过。但是该模块并不能对于进程跟踪数据的处理提供帮助。你必须用其他软件来进行处理。
但mod_session能做的另外一件事是能够为进入的请求重新定义特定的进入点(entry point)。这通常发生在一个网站中包含多个网页的情况下,这些网页中很多都可以在一个用户进程的开始就被直接访问(也就是说用户不需要从首页,就可以直接进入子页)。使用mod_session,你就能够控制客户进入点,强制进行必要的认证。
最后,mod_session和上面的那些模块一样都具有执行cookie和URL改写的能力以保持进程跟踪的连贯性。
mod_session能做什么:
1.从客户端发来的请求立刻被检查,以确定它是否能够同一个可接受的网站进入点匹配;如果不匹配,该客户的请求将被重新指向一个可接受的进入点。
2. 为该进程生成一个唯一的进程ID。
3. mod_session将尝试cookie和URL改写(该模块本身并不能进行URL改写--由另一个独立的程序完成)。
4. 当该用户接下来发送了其他请求时,mod_session会减产HTTP URL和cookie,寻找进程数据;该模块将能够处理该用户发送进程数据的各种媒体方式。
提示
记住要在Apache的配置文件里,在mod_browser和mod_usertrack之前列出这些模块。
和mod_php类似,mod_session也给了你很多非常有用的配置选择,它们包括:
打开或关闭cookie。
为cookie命名,指定域,路径和过期时间(同mod_php一样)。
URLs在改写URL里嵌入进程名。
在进程ID名下记录URL停留时间。
指定一个默认的URL作为网站进入点。
创建有效的网站进入点列表。
指定URL改写脚本的地址。
了解你的用户
虽然使用进程跟踪有了越来越大的安全风险,它在加强安全性上也带来了一些好处。如果你综合考虑这个问题的两面,你就会发现风险是可以化解的,任何时候你都能够轻易地通过一些其他方法来降低的风险。而且,这种做法的一个巨大的好处是它能够帮助你了解你的网站的访问者,了解他们是怎么使用你的网站的。了解你的用户,你就能够对你的系统进行调整以便能更好地为他们服务,这可能就是这样做所能带来的最大的好处。