2012-01-09 61 views
0

我有2个单独的服务器(服务器A和服务器B)每个具有PHP脚本(脚本1和脚本2)。htaccess的只允许从一个特定脚本(不是由IP)

我想在服务器B上运行PHP脚本2,但只能从服务器A上的PHP脚本1运行。我不希望任何其他http请求通过受保护的脚本所在的服务器B上的目录。

换句话说 - >服务器B上运行脚本2 只有 HTTP请求来自脚本1在服务器A {注:我不想通过IP按钮式,只通过引用脚本]

这是可行的.htaccess文件使用允许和拒绝?或者它是以其他方式完成的。

我无法通过_SERVER变种做到这一点,因为我似乎无法捕捉指脚本我的PHP脚本2.

感谢。

回答

1

您可以通过在脚本的根添加该到的.htaccess拒绝访问除了服务器A的所有IP(IP地址是888.888.888.888 =)服务器B:

order deny,allow 
deny from all 
allow from 888.888.888.888 

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

+0

谢谢@lansen的根目录。我知道通过IP进行限制(我曾经考虑过在我已经发布之后添加了该笔记)。我不希望任何请求从特定的PHP脚本以外的任何地方进入 - 即使另一个请求在我的服务器B中出现。 – 2012-01-09 14:45:46

+1

添加带有只有两个脚本知道的密钥的令牌系统。您必须将其添加到PHP。您可以在htaccess中查看REFERER,但我不会建议这样做,因为它很容易伪造(将假引用者发送给脚本) – Iansen 2012-01-09 14:56:16

+0

Ok @lansen - 感谢您的提示。 – 2012-01-09 15:03:14

0

这是一种方法。

将以下在.htaccess中服务器B

# 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] 
+0

感谢@Ulrich Palha ...希望能够以IP以外的方式进行操作。 – 2012-01-09 14:46:44

+0

@ Dr.DOT根据您的要求,.htaccess不是一个合适的解决方案。我建议使用Lansen建议的共享秘密(令牌)系统,因为它更安全。 – 2012-01-09 15:05:20

+0

感谢@UlrichPalha ......我不熟悉发送秘密令牌,所以我会研究这一点。听起来像我想去的方式。我开始使用_GET var,但这并不像我想象的秘密令牌那么安全。现在使用Google搜索... – 2012-01-09 16:28:07

相关问题