是否可以让apache调用另一个可执行文件或脚本来检查访问限制?
我要做的是实现一种调用脚本的方法,该脚本可以检查除了文件系统文件的权限之外的其他限制(例如:检查请求是否包含有效的PHP会话cookie)并告诉apache in如果不允许访问所请求的文件,它必须返回403错误代码(例如:通过返回0以外的退出代码)。
过去我使用PHP脚本处理图像文件请求并处理访问限制。问题是我必须以编程方式设置所有头文件,这不是一件容易的事(例如:如果你想支持304个响应,代码必须检查文件的修改时间并将其与响应中规定的时间进行比较,或检查“etags”等)。我想找到一种方法来避免所有麻烦,只是让apache处理“标题部分”和另一个脚本/二进制文件来处理“访问部分”。
提前感谢您的帮助!!!
答案 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如果您愿意,您甚至可以将“受限制”内容存储在文档根目录之外(但是检查您提供的内容当然是您想要提供的内容,而不是某些内容磁盘上的随机文件。)