2010-02-08 51 views
2

我的index.php簡單的安全問題:PHP包括

include 'class.php'; 
$x = new class; 
include $_GET['page'].'.php'; //checks if isset file_exists and in_array of valid file names before including; 

我要確保被列入不能直接訪問該頁面的樣品。以下是我在index.php中包含的文件的第一行代碼上的一些代碼示例。

我試圖:(如果沒有被包括的index.php模具內)

if($_SERVER['SCRIPT_NAME']!='/index.php') die; 

和(如果這是在索引中定義的類不設置模具);

if(!isset($x)) die; 

什麼是你最喜歡的方式來使頁面被包括在PHP無法訪問時直接查看?

回答

4

define()defined()

或者只是將它們放在文檔根目錄之外。

+0

是否較弱,較強或類似於檢查它是否包含在其中的文件中是否存在變量? – Mickey

+0

它更強大,因爲在某些(不可否​​認的)條件下,可以通過將變量添加到查詢字符串來設置變量。 –

+0

即使全局關閉? – Mickey

2
if($_SERVER['SCRIPT_FILENAME'] == __FILE__) { 
    die("Go Away"); 
} 

對不起,更新它是正確的。

+0

是否有可能欺騙任何兩個變量? – Mickey

+0

老兄你失敗..學習如何閱讀。 – Mickey

+0

我有哪個大規模的漏洞?實際上,這只是一種方式,我認爲這只是其中一種「拋出某些方法」類型的問題。 – Anthony