2012-01-09 64 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

相關問題