把尽可能多的服务隔离运行可以部分地解决这个问题,例如用Apache suexec程序的sbox让所有的CGI在隔离的环境以客户的用户ID而不是Web服务器的用户ID运行。另外,许多服务器上运行着FTP服务,例如wu-ftpd,该服务的所有文件传输都是隔离进行的,同样也保护了善意客户的资料避免被其他人偷看。 然而,恶意的客户仍旧能够用CGI程序创建符号链接指向其他用户的存储区域,然后通过它自己的Web服务器查看其他人的文件,这是因为在一个运行多个网站的环境中,Web服务器无法简单地以隔离方式以及用它为之应答请求的客户的用户ID运行。管理员应该配置Web服务器以及其他文件传输程序使其不再使用符号链接。在Apache上,这可以通过关闭最顶层的“FollowSymLinks”选项实现(不要在较低的层次上把它重新打开),配置代码示例如下:
伪造Web请求(一) |