【问题标题】:Password protecting and only allowing one IP address to access a directory?密码保护并且只允许一个IP地址访问一个目录?
【发布时间】:2012-07-09 00:56:45
【问题描述】:

我的网站上有一个目录,我需要确保除了我自己之外没有人可以进入。从我所做的阅读来看,似乎有两种方法可以保护目录:

  1. 使用 .htaccess 文件对目录进行密码保护
  2. 拒绝访问除我自己以外的所有 IP 地址访问目录,也使用 .htaccess 文件

我需要尽可能安全地保护目录中的文件,所以我想我会使用这两种方法来进行双重保护。

问题 1:我错过了什么吗? (即我可以添加另一层保护吗?)

问题 2:我需要在 .htaccess 文件中放入什么才能使上述内容正常工作?

【问题讨论】:

    标签: apache security .htaccess


    【解决方案1】:

    您的 .htaccess 文件将包含:

    AuthUserFile /usr/local/nate/safe_place/.htpasswd
    AuthGroupFile /dev/null
    AuthName "Protected Files"
    AuthType Basic
    
    require user nate
    order deny, allow
    deny from all
    allow from 127.0.0.1
    

    .htaccess 文件位于您要保护的目录中。

    您还需要一个包含文本 username:password_hash 的 .htpasswd 文件(如上所示 /usr/local/nate/safe_place/.htpasswd)。因此,如果我们使用“nate”作为示例并使用“secret”作为密码(请不要使用该密码),您会得到:

    nate:XmN6pwFyy3Il2
    

    您可以使用此工具生成自己的密码文件:http://www.tools.dynamicdrive.com/password/

    只要确保没有人可以读取您的.htpasswd 文件。另请注意,基本身份验证本身不加密。如果你在一个开放的网络上,任何人都可以看到你的密码和通过网络传输的所有秘密数据。如果确实是那个秘密,请确保您通过 https 访问您的网站。

    您可以在此处阅读有关 .htaccess 文件的更多信息: http://www.javascriptkit.com/howto/htaccess.shtml

    【讨论】:

    • 我尝试在需要保护的目录中创建一个 .htaccess 文件并添加以下内容:AuthUserFile /home/username/.htpasswd AuthGroupFile /dev/null AuthName "Protected Files" AuthType Basic,但是当我从目录加载页面时,没有出现登录提示。页面仍在加载。
    • 尝试以下故障排除步骤:http://httpd.apache.org/docs/2.0/howto/htaccess.html#troubleshoot
    • 我尝试像该页面所说的那样将垃圾放入 .htaccess 文件中,但没有显示错误。
    • 好吧,指南说“对此的一个很好的测试是将垃圾放入您的 .htaccess 文件并重新加载。如果未生成服务器错误,那么您几乎可以肯定 AllowOverride None 有效。”所以现在阅读https://httpd.apache.org/docs/2.0/mod/core.html#allowoverride,这意味着您必须更改您的 AllowOverride 指令。我不知道您现在的设置是什么,但如果您不想将AllowOverride All 放入您的httpd.conf,您至少需要AllowOverride AuthConfig Limit。请注意,您必须在更改其配置文件 (apachectl graceful) 后重新启动 Apache。
    【解决方案2】:

    假设您正在运行 Apache 并且有一个允许 .htaccess 文件使用 <Limit>AllowOverride 指令,那么您应该从以下位置开始:

    <Limit GET>
        Order deny,allow
        Deny from all
        Allow from IP_ADDRESS_HERE
    </Limit>
    

    更多关于&lt;Limit&gt;的文档:http://httpd.apache.org/docs/current/mod/core.html#limit 以及访问控制:http://httpd.apache.org/docs/2.2/howto/access.html

    【讨论】:

    • Limit 指令不是一个好的选择。 HEAD,PUT,DELETE,...怎么样?如果它在 .htaccess 文件中,则实际上不需要任何封闭指令,如果不是,则应该在 Location 指令中。
    猜你喜欢
    • 2012-08-03
    • 2015-08-07
    • 2011-04-13
    • 2016-12-02
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多