我試圖在網絡上的其他地方搜索此地址。訪問根目錄之外的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