gpt4 book ai didi

file - 拒绝访问特定目录中的特定文件类型

转载 作者:行者123 更新时间:2023-12-03 13:20:08 25 4
gpt4 key购买 nike

对于某些应用程序,用户可以上传自己的文件。由于这可能是非常大的文件,因此他们可以通过自己的 FTP 客户端上传它们。

当然,我不希望他们上传一些 PHP 文件,以便他们可以访问服务器上的所有其他文件。我想防止这种行为的方法之一是拒绝仅访问这些文件夹中的特定文件类型(如 php、rb、py 等)。

我找到了拒绝访问文件夹、文件和文件夹中文件的方法,但没有任何关于文件夹中文件类型的方法。

我尝试结合我发现的内容,例如:

<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>

更改为
<Files uploads/ "\.inc$">
Order allow,deny
Deny from all
</Files>

或替代方式
RewriteRule ^(\.php) - [F,L,NC] 


RewriteRule ^(uploads/\.php) - [F,L,NC]

但是,我不知道应该使用什么语法。

因此,例如,我可以有以下(基本示例):
/index.php
/uploads/
hack.php
hack.rb
hack.py
pony.jpg

我希望 hack.php/rb/py 不可用,但其他所有内容都可用。我应该使用什么语法?

最佳答案

FilesMatch 指令纯粹作用于文件名。它根本不看路径部分。

如果要在根 .htaccess 文件中指定指令来控制子目录,可以使用 mod_rewrite .

尝试这个:

RewriteRule ^uploads/.*\.(php|rb|py)$ - [F,L,NC]

以上将阻止/uploads 目录或其子目录中以 .php 或 .rb 或 .py 结尾的任何文件名。例如,它将阻止:
  • /uploads/something.php
  • /uploads/something/more.php

  • 请注意,重写规则中没有前导斜杠。您需要在指令中使用的路径将根据其放置位置而有所不同。上述指令,如果放置在文档根目录的 .htaccess 文件中,将适用于文件根目录正下方的名为 uploads 的目录中的文件。

    虽然以上回答了您的问题,但应该是 允许更安全 仅特定文件,而不是试图阻止文件。通常,服务器会执行您列出的扩展名以外的文件。

    你可以这样做:
    RewriteCond %{REQUEST_URI} ^/uploads [NC]
    RewriteCond %{REQUEST_URI} !\.(jpe?g|png|gif)$ [NC]
    RewriteRule .* - [F,L]

    如上所述,如果请求 URI 以/uploads 开头但不以指定的扩展名之一结尾,那么它是被禁止的。您可以将扩展更改为适合您需要的任何内容。但是这样,您可以根据需要允许扩展,而不是发现您错过了阻止扩展为时已晚。

    这条规则(来自你的问题)
    RewriteRule ^(uploads/\.php) - [F,L,NC]

    会阻塞
  • /上传/.php
  • /uploads/.phpmore

  • 但它不允许目录名和文件扩展名之间有任何内容。

    如果您打算使用重写规则,您可能想了解更多关于 regexp 的信息。我经常提到 www.regular-expressions.info当我需要查找某些东西时。

    关于file - 拒绝访问特定目录中的特定文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16108399/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com