2009-11-30 155 views
6

是不是所有的文件在公共視圖中都是壞事?爲什麼CodeIgniter應用程序文件在public_html文件夾中?

當然,像/system/application/config/database.php這樣的東西不應公開可見!

+1

是的我已經看過CI了。我想知道爲什麼這個不安全的配置是默認的。似乎它純粹是爲了易於使用而直接使用。 #2 PHP並不總是得到分析可能是因爲管理員錯誤,(見弗蘭克農民的評論,下同) #3#見2 – Matthew 2009-11-30 22:29:59

回答

26

CodeIgniter的開發人員EllisLabs已經以這種方式設置了框架,以方便使用。這意味着希望嘗試框架的人不必在他們的服務器上擺弄任何權限設置。

當然,在生產服務器上,你是絕對正確的,把你的PHP文件放在公共HTML文件夾中並不是一個好主意。

一種更好的方式來組織你的文件夾是:

    • code_igniter
      • application_folder
        • 配置
        • 控制器
        • 車型
        • ...
      • system_folder
    • 的public_html
      • CSS
      • JS
      • 圖像0​​的index.php 的.htaccess

其他唯一的變化在這裏取得的進展將是改變的index.php線26閱讀:

$system_folder = "../../code_igniter/system-folder"; 
+0

我也喜歡拉應用程序文件夾出的CodeIgniter文件夾中。我很少碰到CodeIgniter的源碼,這爲我節省了一層嵌套。 – MiseryIndex 2009-11-30 21:44:22

+0

這也意味着你可以重新使用代碼點火器安裝另一個應用程序,而不復制它在它自己的目錄 – Matthew 2009-11-30 22:25:47

+2

與此設置您還需要更改index.php中的$ application_folder從默認 – 2009-12-01 02:02:14

0

訪問內/系統文件/文件瀏覽器不會顯示任何敏感信息,因爲PHP將被解析並且不會從這些文件輸出(CI系統文件甚至可以檢查是否已經定義了指示文件未被直接訪問的變量)。

這就是說,然而,你應該安裝你的整個系統文件夾上面的web根目錄無論如何。

+3

不幸的是,有時PHP不會被解析 - 通常是由於管理員錯誤。這就是Facebook所有源代碼在一段時間後被泄露的原因。這就是爲什麼你應該把所有東西都放在世界上可用的路徑上。這就是將你的貴重物品鎖在手套箱中,而不是把它們放在汽車裏的區別。 – 2009-11-30 21:41:15

0

您可以隨時將系統目錄放置在公共目錄之外。不要忘記更新前端控制器(index.php)中的路徑。

6

您可以將以下規則添加到您的。htaccess文件,以進一步保護系統和應用程序的目錄被查看(發送403 Forbidden錯誤):

# Protect application and system files from being viewed 
RewriteRule ^(application|system) - [F,L] 
+0

這裏[F,L]實際上做了什麼? – Matthew 2009-11-30 22:32:34

+1

F添加一個標題(403禁止),L只是防止處理任何進一步的規則。 – 2009-11-30 23:29:03

1

通過這樣的結構:

/application 
/system 
/public 
    index.php 

可以在public/index.php這兩個設置發生變化,你是做

$application_folder = '../application'; 
$system_path = '../system'; 
1

喬恩·溫斯坦利的答案是完美的, 也不要忘記,以確保文件上傳文件夾,如果你有Ø東北。我也是通過將它移動到公共根外,並使用以下代碼獲取圖像:

<?php 
// $details = getimagesize($_GET["path"] . '/' . $_GET["image"]); 
$details = getimagesize($_GET["path"] . strip_tags($_GET["image"])); 
header ('Content-Type: ' . $details['mime']); 
readfile($_GET["path"] . strip_tags($_GET["image"])); 
exit; 
?> 
+0

當然,我們通過遍歷每個元素來清理$ _GET數組 – serdarsenay 2015-03-13 10:16:39

相關問題