Ach*_*nos 12 php apache security fastcgi access-control
我正在寻找一种方法来使用PHP脚本来控制对Apache资源的访问.我希望拥有不依赖于目标资源的访问控制; 即它将适用于html,文件,其他脚本和cgi程序,就像"允许来自"或"拒绝来自"指令一样 - 除了使用自定义逻辑.
我已经看了几种方法来尝试管理它:
鉴于FastCGI的普及,其中#2看起来最有前途,也是最便携的.所以,我设法换掉了通常的linux php模块,让php通过fastcgi工作.它比在Windows上更难,但最终作为外部服务器工作,即使用Apache指令
FastCGIExternalServer /var/www/html/thing -host 192.168.0.11:9000
并启动php守护进程
php-cgi -q -b 192.168.0.11:9000 &
试图找到一种使用FastCgiAccessChecker调用PHP脚本的方法遇到了麻烦.
我尝试过各种方法尝试通过更改FastCGIExternalServer和/或FastCgiAccessChecker指令中的文件名来传递我想要运行的脚本名称 - 不起作用.我也尝试用脚本说明符启动php-cgi,即
php-cgi -q -b 192.168.0.11:9000 -f /var/www/html/thing/access.php &
什么都行不通.我可以告诉apache识别我的指令,因为当我包含FastCgiAccessChecker然后访问一个php页面时,内容类型更改为text/plain,如果它是一个脚本,我会从页面服务中丢失第一个~8000字节的内容(否)想法为什么).但它不会调用我想运行的PHP脚本.
据我所知,发生的事情是FastCgiAccessChecker假定指定的fastcgi服务器专门编译为充当访问检查器.没有办法告诉fastcgi服务器(在我的情况下是PHP)运行什么脚本来进行访问检查.
我在网上搜索过,据我所知,没有人曾尝试过使用PHP脚本,或者没有人写过.
所以我的问题是:我该怎么做?我可以看到一些可能性:
1)我遗漏了一些东西,并且有一些神奇的方法让FastCgiAccessChecker做我想做的事:运行PHP脚本来控制apache访问控制
2)我在c中编写自己的FastCGI服务器并嵌入PHP,因此我可以指定我想要运行的PHP脚本(我花了几分钟时间查看它;它看起来很复杂和可怕,我没有在c中工作自1995年以来)
3)我放弃了FastCGI并编写了一个apache模块来直接调用我的PHP脚本来控制访问.(看起来也很复杂;而且这种技术需要为每个执行PHP的请求生成一个新进程.)
有没有人有任何建议,无论是如何让FastCGI做我想要的,或者是(合理地)简单替代FastCGI?
感谢你能提出的任何建议
我对这些类型情况的处理方法是将mod_xsendfile与mod_rewrite结合使用.这些可能看起来没有你想要的第一个,但如果你:
您基本上可以以这种方式实现所需的任何安全系统.
mod_xsendfile本质上只是以与Apache直接访问文件相同的方式发送文件.它是稳定的,并且在我抛出的每种情况下都能很好地工作.它也应该"正常工作",没有巨大的设置负担,你似乎正在努力一点点.
| 归档时间: |
|
| 查看次数: |
1930 次 |
| 最近记录: |