【问题标题】:.htaccess Allow only from a certain script (not by IP).htaccess 仅允许来自某个脚本(而不是通过 IP)
【发布时间】:2012-01-09 14:26:54
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    您可以通过将以下内容添加到脚本根目录中的 .htaccess 中,拒绝对​​服务器 B 上除服务器 A(ip = 888.888.888.888)之外的所有 IP 的访问:

    order deny,allow
    deny from all
    allow from 888.888.888.888
    

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

    【讨论】:

    • 谢谢@lansen。我知道通过 IP 进行限制(我想在我发布后添加该注释)。除了特定的 PHP 脚本之外,我不希望任何来自任何地方的请求——即使另一个请求来自我的服务器 B。
    • 添加一个带有只有两个脚本知道的密钥的令牌系统。您必须将其添加到 PHP。您可以在 htaccess 中检查 REFERER,但我不建议这样做,因为它很容易伪造(向脚本发送虚假的引用)
    • @lansen -- 抱歉,我从未使用(或听说过)“秘密令牌”方法。复杂吗?您是否有要分享的示例代码块,以便我了解它是如何工作的。谢谢!
    • 这并不难。在发送请求的脚本中,您设置了一个密钥......就像这样:` $secret_key="some_random_string_here"; ` 然后使用此密钥和您发送到第二个脚本的数据生成一个唯一(取决于您发送的数据)令牌。假设您要发布 3 个字段......令牌看起来像这样:$token=md5($secret_key.$field1.$field2.$field3); 并将 $token 和您的数据发送到第二个脚本。在第二个脚本中获取数据并再次生成令牌(如上)。如果令牌匹配运行脚本。
    • 在第二个脚本中://never sent the $secret_key over http //only the 2 scripts know what it is $secret_key="some_random_string_here"; $local_token=md5($secret_key.$_POST['field1'].$_POST['field2'].$_POST['field3']); //$_POST['token'] -is the token sent by script 1 if ($local_token==$_POST['token']) { //your code here }
    【解决方案2】:

    这是一种方法。

    在Server 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]
    

    【讨论】:

    • 感谢@Ulrich Palha...希望能够以 IP 以外的方式实现。
    • @Dr.DOT 鉴于您的要求,.htaccess 不是一个合适的解决方案。我建议使用 Lansen 建议的共享秘密(令牌)系统,因为它更安全。
    • 谢谢@UlrichPalha...我不熟悉发送秘密令牌,所以我会调查一下。听起来像我想走的路。我从使用 _GET var 开始,但这并不像我设想的秘密令牌那样安全。现在谷歌搜索...
    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 2017-08-15
    • 2013-11-06
    • 2012-02-18
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    相关资源
    最近更新 更多