2

我有我的.htaccess文件,并且我有一个包含配置文件的文件夹,它们包含敏感内容,例如数据库详细信息等。我想知道的是,如何阻止来自浏览器的访问,但允许访问它们通过我的脚本?

我知道这可以在 PHP 文件本身内部实现,但我宁愿.htaccess尽可能使用这种方法。

这真的可以做到吗?我之前尝试过,但是在拒绝从浏览器访问文件的过程中,它也拒绝了来自编码的访问。

我以前研究过这个,我遇到的一些答案建议将扩展名更改为类似.inc的,然后拒绝访问。但是,我遇到的几个问题是 a) 它会立即提醒任何可以看到该文件名的人,无论出于何种原因,它是一个配置文件。另外,b)如果我的拒绝代码中断,浏览器不会将其解析为 PHP 文件,而是将其解析为inc文件,这意味着它将在浏览器中打印代码。

基本上,这可以在一个.htaccess文件中完成,还是我需要在每个配置文件的标题中放置一些东西?

4

3 回答 3

3

将这些文件放在 Web 服务器的文档根目录之外。

您仍然可以通过服务器端脚本访问它们,但这确保了外部世界无法直接访问它们。

于 2012-07-06T04:48:53.387 回答
2

传统的建议是将此类文件放在“Web 服务器的文档根目录之外”。这一切都很好,但是许多共享托管产品只提供对您的 public_html 目录的写访问权限。

我使用一个简单的约定:任何私有内容(不是 URI 可寻址的)都以下划线为前缀,或者在名称以下划线为前缀的目录中(例如_private_include)。然后我在我的 DOCROOT.htaccess文件中包含这个重写规则:

# if a forbidden directory or file name (starting with a . or /) 
# then raise 404 Fatal return

RewriteRule (^|/)[_.] -                                            [F]

请记住,您需要在启用引擎的任何RewriteEngine On文件的顶部添加前缀和/或包含它。 .htaccess

注意“。” 前缀选择文件,例如.htaccess.

于 2012-07-06T12:30:18.673 回答
-2

请使用框架,这类问题不需要存在。如果您坚持,请编写一个 .htaccess 将每个请求重定向到根目录中的单个 index.php,然后有更多逻辑来确定请求是否针对有效文件并包含它们,否则生成 404 或 403 . 如果您需要静态文件的性能,则使用 RewriteCond 从 index.php 检查中排除特定目录或文件类型。

于 2012-07-06T04:45:46.320 回答