2010-03-04 125 views
0

我是CodeIgniter的新手,我想知道是否考慮限制直接訪問視圖文件?顯然他們將包含很多依賴於變量和不從控制器傳遞給他們的php代碼,所以如果直接訪問php代碼可能會出錯,那麼php代碼很容易出錯。限制直接訪問CodeIgniter中的視圖文件?

獎金問題:爲什麼助手,庫,鉤子等文件夾在應用程序文件夾中是空的?

謝謝你的時間。

回答

4

主要的原因,沒有人打擾,以限制訪問到他們的視圖文件是因爲他們會致命的錯誤或顯示無用的頁面。

如果人們想努力設法解決你的文件夾結構和文件名,他們將被獎勵......絕對沒有。你將不得不寫一些非常瘋狂的代碼來使視圖不安全。

如果您確實想保護它們,請繼續。

在您的視圖的頂部,請輸入:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); ?> 
<h1>Whatever</h1> 
+0

訪問它們。謝謝,我發現這也是系統和應用程序文件中使用的默認設置。 – 2010-03-05 20:38:19

+0

確實。這與在CI實例中運行的任何PHP文件完全相同。如果它不包含在CI中,它將不會運行。 – 2010-03-08 15:30:20

+0

如果我們沒有談論CI,那麼'if'看起來如此,那麼「純粹的」PHP呢? – Francisc 2012-07-12 10:46:02

1

我從來沒有見過任何人限制訪問查看文件,但我沒有看到任何理由爲什麼你不能這樣做。爲了提高安全性,您應該將系統和應用程序文件夾放在Web根目錄下,並將index.php指向一個目錄到這些文件夾。這樣,直接訪問你的文件的可能性就很小。

至於爲什麼這些文件夾是空的。應用程序文件夾是您放置代碼的地方。系統文件夾中的幫助程序,庫和模型文件夾都填充有源代碼。目標是僅將代碼放入應用程序中,以便在升級到未來版本的CodeIgniter時,不要破壞已實現的任何代碼或功能。您還可以通過做什麼,在這裏說,超載笨功能...

http://codeigniter.com/user_guide/general/creating_libraries.html

,向下滾動到「擴展本機庫」

+0

感謝您的回答。不幸的是,我使用的共享虛擬主機不允許在wwwroot之外上傳文檔。我很困惑,我是唯一一個考慮限制訪問我的視圖文件的人,看到作爲開發人員,您的主要目標之一是避免您的代碼在用戶之前中斷。 – 2010-03-05 06:58:35

+0

然後明確地將您的系統和應用程序文件夾重命名爲模糊處理,並禁止通過.htaccess – 2010-03-05 20:50:30

1

用戶, 如果你是一個共享的主機上,他們不允許訪問任何東西比wwwroot文件夾,您可以創建子文件夾(將其命名爲「private」)並寫入其.htaccess文件以拒絕對此子文件夾的所有請求。然後,您可以將codeigniter的系統和應用程序文件夾放在該子文件夾中,並將index.php文件夾放在常規位置(更改index.php中的「system」和「application」變量以正確反映新路徑)所有的代碼都不能直接訪問。 :-)

編輯: 關於文件夾問題,它是一個範圍的事情。助手,庫,鉤子應用程序文件夾用於特定於應用程序的項目。也許是你自定義創建的,或者是從第三方下載的。但是,這個想法是,你有「全系統」項目,然後你有「應用程序範圍」的項目。擁有應用程序文件夾後,您可以擴展系統範圍的項目以滿足特定的應用程序需求(請參閱更多@http://codeigniter.com/user_guide/general/creating_libraries.html)。這對一個應用程序來說沒有多大意義,但是如果你的安裝有多個應用程序,那真的是這個派上用場了。