Apache:是否可以将访问控制委托给可执行文件?

时间:2013-12-17 21:57:53

标签: apache

是否可以让apache调用另一个可执行文件或脚本来检查访问限制?

我要做的是实现一种调用脚本的方法,该脚本可以检查除了文件系统文件的权限之外的其他限制(例如:检查请求是否包含有效的PHP会话cookie)并告诉apache in如果不允许访问所请求的文件,它必须返回403错误代码(例如:通过返回0以外的退出代码)。

过去我使用PHP脚本处理图像文件请求并处理访问限制。问题是我必须以编程方式设置所有头文件,这不是一件容易的事(例如:如果你想支持304个响应,代码必须检查文件的修改时间并将其与响应中规定的时间进行比较,或检查“etags”等)。我想找到一种方法来避免所有麻烦,只是让apache处理“标题部分”和另一个脚本/二进制文件来处理“访问部分”。

提前感谢您的帮助!!!

1 个答案:

答案 0 :(得分:1)

您可以使用prg: RewriteMap,并且在程序返回“NULL”时禁止使用RewriteRule进行访问。如果您打算使用php脚本,则打开php://stdin,从中读取传入的Cookie:标头,并确定它是否是您要允许的会话。在vanilla php会话中检查这些会话的问题是你几乎来启动该会话来解决这个问题:确保你已经加载或自动加载所需的所有可能的类定义,调用{{ 1}},session_id('the id you found in the cookie');,检查session_start(),然后再次写$_SESSION。存在各种危险(如果您的类未正确加载则会中断会话,如果您的php脚本意外死亡则会出错)等。

如果你的Apache服务器受到控制,我宁愿mod-xsendfile:打开一个php脚本,php脚本设置要传递的图像的位置,session_write_close()完成其余的工作,包括etags如果您愿意,您甚至可以将“受限制”内容存储在文档根目录之外(但是检查您提供的内容当然是您想要提供的内容,而不是某些内容磁盘上的随机文件。)