【问题标题】:secure underlaying directory with htaccess使用 htaccess 保护底层目录
【发布时间】:2012-08-21 06:06:58
【问题描述】:

我已经为别人创建了一个axtra ftp 帐户,所以他可以上传文件。(比赛结果,大约20/30 htm 文件和图像) 我也很偏执,所以如果他上传“可能危险”的文件,我不希望这些文件可以通过 http 请求访问。在 PHP 的帮助下,我想获取这些文件的内容。 (我预计不会有麻烦)

问题: 我的主机不允许额外的 ftp 帐户访问 public_html 之外。 所以我认为 htacces 应该解决我的问题。只是通过拒绝所有规则。 但是通过 ftp 访问,这个 htaccess 文件可以被删除或更改。

所以我尝试在我网站根目录的主 htacces 文件中添加以下代码:

<Directory "/home/xxxx.nl/public_html/xxxxxxxx.nl/onzetoernooien/swissmaster_ftp">
deny from all
</Directory>

我的网站因内部服务器错误而挂起。 我无权访问 httpd 文件。

我的想法是在这个目录上方使用一个 htacces 文件。 如果绝对路径不正确,我可以使用某种通配符,例如 *swissmaster?

我在 Apache 网站上搜索过,但我迷失在海量的信息中。

提前感谢您的帮助!

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    很遗憾,您不能在 .htaccess 中使用 &lt;Directory&gt; 部分,只能在服务器配置文件中使用。这会导致服务器错误(检查您的错误日志,您会看到错误消息)。我们也无法使用&lt;Filesmatch "subdir/.*$"&gt; 保护子目录,因为 FilesMatch 仅检查所请求 URI 的文件名部分。

    但是,您可以按照以下方式使用 mod_rewrite:

    RewriteEngine on
    
    RewriteRule ^subdir.*$ - [NC,F]
    

    如果请求的 URI 与正则表达式模式 subdir.* 匹配(因此“subdir”后跟其他任何内容;您可能需要调整该模式,因为它也很高兴地捕获了 subdir_new/something.txt ——我相信你明白了这个想法),那么 mod_rewrite 的 F flag 将返回 403 Forbidden 状态(NC 代表 No-Case,使模式不区分大小写)。

    【讨论】:

    • 我确实添加了重写规则并且我的网站没有关闭,但该目录仍然可以访问。所以我认为我必须玩弄表达本身。我已将 subdir 替换为 swissmaster_ftp。
    • Yessssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss ^ 符号表示字符串的开头,所以如果省略它就可以了!现在我必须注意重复的名称,否则也无法访问。谢谢星期六!
    • 我很高兴它成功了 :)。对于表达式,我建议^full/path/to/subdir(/.*)? - 要么什么都没有(处理索引),要么是斜线和零个或多个字符(索引、所有文件和嵌套目录)。我认为这可以涵盖所有问题。
    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多