2010-02-08 1 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

является более слабым, более сильным или похожим на проверку наличия переменной isset в файле, в который она включена? – Mickey

+0

Это сильнее, потому что при определенных (по общему признанию сломанных) условиях переменные могут быть установлены путем добавления их в строку запроса. –

+0

даже с глобалами? – Mickey

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

Извините, обновите его, чтобы быть прав.

+0

можно ли обмануть любую из двух переменных? – Mickey

+0

Чувак, которого вы терпите неудачу .. научитесь читать. – Mickey

+0

Какая массивная уязвимость у меня была? И на самом деле, это только один из способов, я думал, что это всего лишь один из вопросов типа «выбросить некоторые методы». – Anthony