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



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

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

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

提前感谢您的任何帮助!!

您可以使用

prg: RewriteMap ,并在程序返回"NULL"后禁止访问RewriteRule。如果你打算使用一个php脚本,你可以打开php://stdin,从中读取一个传入的Cookie:头,并确定它是否是你想要允许的会话。在原版 php 会话中检查这些会话的问题在于,您几乎必须启动该会话才能弄清楚:确保您具有加载或可自动加载所需的所有可能的类定义,调用 session_id('the id you found in the cookie');session_start()、检查$_SESSION,然后再次编写session_write_close()。存在各种危险(如果您的类未正确加载,会话中断,如果您的 php 脚本意外死亡,则会出现错误等)。

如果你控制了你的Apache服务器,我更喜欢mod-xsendfile:打开一个php脚本,php脚本设置要交付的图像的位置,剩下的mod-xsendfile做,包括etag,修改时间等。然后,如果您愿意,您甚至可以将"受限"内容存储在文档根目录之外(但请检查您交付的内容是否是您想要交付的内容,而不是磁盘上的某个随机文件)。

相关内容

最新更新