.htaccess仅允许来自某个脚本(不是通过IP)

时间:2012-01-09 14:26:54

标签: .htaccess

我有2个独立的服务器(服务器A和服务器B),每个服务器都有一个PHP脚本(脚本1和脚本2)。

我在服务器B上运行了我想要运行的PHP脚本2,但仅限于服务器A上的PHP脚本1.我不希望任何其他http请求通过受保护脚本所在的服务器B上的目录。< / p>

换句话说 - &gt;在服务器B上运行脚本2 仅当 http请求来自服务器A上的脚本1. {注意:我不想按IP按键,只能通过引用脚本]

使用Allow和Denys在.htaccess文件中是否可行?或者是以其他方式完成的。

我无法通过_SERVER var执行此操作,因为我似乎无法捕获PHP脚本2中的引用脚本。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以拒绝访问服务器B上除服务器A(使用ip = 888.888.888.888)之外的所有IP,方法是将其添加到脚本根目录中的.htaccess:

order deny,allow
deny from all
allow from 888.888.888.888

但这取决于服务器A如何访问服务器B上的脚本 - 如果它是服务器端调用它应该工作。
我还建议使用令牌系统: 服务器A向服务器B发送请求和令牌(类似于md5(秘密字符串+请求数据)) 服务器B检查令牌,并在所有内容都检出时运行脚本。

答案 1 :(得分:0)

这是一种方法。

将以下内容放在服务器B的根目录中的.htaccess

# if the ip address matches the server of script1, set MY_ALLOW (default=1)
#change the ip to match the ip of server A
Setenvif Remote_Addr ^12\.34\.567\.89$ MY_ALLOW_SCRIPT2

#if the script is not allowed
RewriteCond %{ENV:MY_ALLOW_SCRIPT2} !1
# return a 403 forbidden
RewriteRule ^script2 - [F]