【问题标题】:Use .htaccess to restrict external access to my Intranet使用 .htaccess 限制对我的 Intranet 的外部访问
【发布时间】:2022-01-15 21:48:25
【问题描述】:

我确信这是可能的,但它超出了我对 .htaccess 文件的微薄能力。

我们有一个我们使用的内部 php 应用程序,我们内部有基本的安全性,但不需要太担心。我想让它在线上供员工外出时使用。我想基于 htaccess 或 htpassword 文件获得额外的安全性。

是否可以编写一个执行以下操作的 htaccess 文件

  • 如果用户从 office.mydomain.com 访问,则表示他们是内部的(office.mydomain.com 解析为内部 ip,如 192.168.22.22),因此允许畅通无阻的访问
  • 如果用户从外部访问,它将是 external.myoffice.com - 如果是这种情况,作为额外的安全性,我想使用 .htaccess 和密码文件让用户输入 apache 密码.

谁能告诉我如何用 .htaccess 文件写这个?

更新:感谢所有答案,我已经发布了对我有用的答案以帮助他人。

【问题讨论】:

    标签: regex .htaccess mod-rewrite


    【解决方案1】:

    你可以使用

    RewriteCond %{REMOTE_ADDR} !^192\.168\.
    

    指定外部IP的条件,或者使用

    RewriteCond %{REMOTE_ADDR} ^192\.168\.
    

    本地IP的条件。

    您只需将这些以合理的方式集成到您现有的 htaccess 规则中。

    【讨论】:

    • 谢谢,但我认为这仅适用于重写规则而不是身份验证。
    • @Toby Allen:要将其用于访问控制,您需要在RewriteRule 中使用forbidden|F 标志。
    【解决方案2】:

    我认为这确实可以满足您的要求; http://codesanity.net/2009/11/conditional-htpasswd-multienvironment-setups/ http://tomschlick.com/2009/11/08/conditional-htpasswd-multi-environments/

    https://tomschlick.com/2009/11/08/conditional-htpasswd-multi-environments

    截至 2022/01/15 的资源的正确地址。 https://tomschlick.com/conditional-htpasswd-multi-environments/

    【讨论】:

    • 域codesanity.net 已死-此答案不再有用。
    • 感谢@UlrikH.Kold 的提醒。将 url 更改为新域。
    • @JRameshFernandez 链接现已修复。
    【解决方案3】:

    给你

    order deny,allow
    allow from 192.168.22.0/255.255.255.0
    deny from all
    

    您可以使用子网掩码来确保访问者来自同一网络。如果您需要寻址另一个网络,只需使用这些 IP(如服务器所见)

    【讨论】:

    • 192.168.22.22 是我的服务器的 ip,而不是客户端。我需要基于 url 而不是 ip 地址。
    • 我不确定这会有所帮助。 Toby 不想阻止外部用户访问。他只是想给本地用户特殊的待遇。
    【解决方案4】:

    为了完成这个答案,下面的作品。

    #allows everything if its on a certain host
    SetEnvIf HOST "^www.mysite.com" external_url
    SetEnvIf HOST "^localhost" local_url
    Order Deny,Allow
    
    AuthName "Restricted Area"
    AuthType Basic
    AuthUserFile path/to/your/.htpasswd
    AuthGroupFile /
    Require valid-user
    
    #Allow valid-user
    Deny from all
    Allow from env=external_url
    Allow from env=local_url
    Satisfy any
    

    如果您通过 www.mysite.com 访问,则会弹出一个受限区域登录框,但如果您是本地访问,则不会显示任何内容。

    【讨论】:

      猜你喜欢
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多