PHP如何阻止直接URL文件访问

时间:2014-08-19 13:38:53

标签: .htaccess access-control

我目前正在创建一个用PHP编写的项目,并且有许多文件,如类,程序等,我更喜欢没有人可以直接从URL访问。 我考虑过使用以下形式的.htaccess设置:

Order Deny,Allow
Deny from all

我想知道这样的设置是否可以解决问题,我也想知道是否还有其他方法可以使用。感谢。

4 个答案:

答案 0 :(得分:2)

可能最好将它们从您的网络服务器的公共根目录移出,而是使用公共内部的专用加载程序类引用它们(并且只包括来自...等)

将敏感控制器和文件存储在Web根目录中并不明智。

答案 1 :(得分:1)

您可以使用.htaccess

阻止对某些文件的访问
<Files ~ "\.(ext)$">
  Order allow,deny
  Deny from all
</Files>

希望它有效

我担心阻止直接访问文件可能会导致意外结果。

答案 2 :(得分:1)

对我来说,最好的方法是.htaccess,如你所说或使用FileZilla,例如。您可以更改对文件/文件夹的权限访问权限。

或者您可以为您设置$_SESSION['access']

不要忘记通知您不希望通过robots.txt附加这些文件

Disallow: /your_folder/
Disallow: /your_file

答案 3 :(得分:0)

您要查找的内容需要一个所谓的“路由器”和规则,将所有请求重定向到一个索引,以便说出“入口”文件。

然后你必须在几个部分中分割路线,建立一个逻辑并将其与可能存储在路线文件中的有效路线列表进行比较。

这种行为通常与使用MVC模式的PHP框架配对。

你应该google for“php route mvc”,你会找到如何构建这些内容的教程。

然而,一个好的开始是将所有请求重定向到一个特定文件,如上所述。

你可以使用htaccess,它看起来像这样:

RewriteEngine On
Options -Indexes

RewriteRule .* index.php [L]

这会为每个网址调用前面的index.php文件,无论它是否指向现有文件。

然后,您的索引文件应包含使用服务器变量(例如$ _SERVER [“REQUEST_URI”])提取URL的逻辑并对其进行分析,然后在内部重定向或更好地包含您希望通过此URL显示的内容。