我试图在网络上的其他地方搜索此地址。访问根目录之外的php文件最安全的方法是什么?
似乎无法得到一个坚定的答案,表明它是最安全的方式。
我知道最安全的方法是在可能的情况下,不要在可以帮助的根目录中包含任何php文件。
所以,我想知道的是,如果我想包括一个PHP文件存储在根目录外面,比如说,在另一个目录中,对我来说最安全的方法是什么?
我试图在网络上的其他地方搜索此地址。访问根目录之外的php文件最安全的方法是什么?
似乎无法得到一个坚定的答案,表明它是最安全的方式。
我知道最安全的方法是在可能的情况下,不要在可以帮助的根目录中包含任何php文件。
所以,我想知道的是,如果我想包括一个PHP文件存储在根目录外面,比如说,在另一个目录中,对我来说最安全的方法是什么?
这不会直接回答您的问题,但也许它会让您以不同的方式查看您的应用程序结构。我认为这是一个误解,它是不安全包含来自您的webroot之外的文件。
相反,很多人都有一个结构,其中大多数不是所有的应用程序逻辑都在public_html
或类似的目录之外。尤其适用于所有路由器类型的系统。
你可以有一个结构是怎样的:
var
www
public
something.js
happy.jpg
index.php
application
bootstrap.php
AwesomeClass.php
Router.php
与
现在你index.php
你可以制定出真正根您的应用程序。
喜欢的东西:
define('WEB_ROOT', __DIR__);
define('APP_ROOT', dirname(__DIR__));
define('PHP_ROOT', APP_ROOT . DIRECTORY_SEPARATOR . 'application');
你现在有指向你的公共html目录的实际文件系统路径和你的PHP文件是常量,现在可以安全地包括像文件:
include(PHP_ROOT . DIRECTORY_SEPARATOR . 'bootstrap.php');
这是非常安全的,许多人都有这样的应用程序结构。如果你没有任何.htaccess
或类似的巫术,那么它也会阻止人们浏览任何你正在铺设的php文件。
有趣的是,试验前两个定义在那里,但问题....如何DIRECTORY_SEPARATOR是否工作?它有什么作用? – Kalcoder 2012-07-07 13:55:29
@Kalcoder:它是一个操作系统特定的常量。在Windows上它是'\',在* nix/BSD上是'/'。所以你的文件路径总是有正确的。 – Leigh 2012-07-07 14:20:23
啊我看到了,所以基本上它会确保它或者需要是例如home/somefolderoutsideofpublic/fileimgoingtouse.php或home \ somefolderoutsideofpublic \ fileimgoingtouse.php,确定很酷很有意义,谢谢! – Kalcoder 2012-07-07 14:24:39
通过'root'你的意思是你可公开访问的文件夹又名'public_html'? – F21 2012-07-07 10:40:47
是的,所以有人可能进入并干扰损坏的文件夹 – Kalcoder 2012-07-07 10:45:08