2011-04-14 83 views
3

加載所有.php文件我用一個函數來加載這似乎是一個文件夾中的所有文件:從文件夾

foreach (glob(ROOT ."path/*.app.php") as $file) { 
    $filename = basename($file, '.app.php'); 
    load_app($filename); 
} 

現在,我認爲這可能是一個有點不安,我我很確定我讀了一些關於這是邪惡的東西。但考慮一下,我最終以爲,如果有人可以將文件添加到我的根文件夾,並通過FTP訪問它,那麼我的問題遠比只添加文件更糟糕。不是嗎?

爲什麼我應該避免這種行爲?有沒有什麼理由要這樣做?

回答

1

這沒有固有的安全問題。我只是爲了簡單和模糊的性能問題而避免它。

如果有人能夠在根文件夾中添加新文件,他們很可能還能夠修改現有文件。所以就像你說的那樣,在這種情況下你會遇到更嚴重的問題。 (固定列表的可包含文件因此不會有任何幫助。)

這是btw。我用於PHP cron腳本的一種方法,該腳本通過cron.d/文件夾運行枚舉腳本執行。你的庫包含用例有一點不同的目的,但我不能誠實地看到任何事實問題。 (性能可能無法衡量。)

1

你給出的原因正是那個讓這個不安全:如果.app.php文件放在文件夾中(如果是錯誤,或因爲有人故意把它放在那裏),它會被解釋。

這將是更安全不包括所有文件 - 但只包括一個固定列表,對應於你知道的文件。

+0

但是,如果有人可以訪問我的文件夾可以做的不僅僅是添加一個文件,是不是?如果我可以訪問網站的根文件夾,我會刪除整個文件夾或更改代碼,而不是添加自動加載的文件。 – Shoe 2011-04-14 17:24:14

+0

除非你會注意到,如果每個被刪除 - 你會注意到一個額外的文件,如果它不會導致任何錯誤? – 2011-04-14 17:25:08

+0

好吧,讓我們考慮一下,沒有人可以訪問該文件夾。還會有什麼其他風險? PS:我會發現很難在現有的文件中找到一些額外的代碼行,而不是更多的文件。 – Shoe 2011-04-14 17:27:33