[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрипт не должен исполняться напрямую
ancient mariner
Суть такова.
Есть index.php, в котором через switch подключаются разные файлы.

switch ($variable)
{
case 'lalala'
include 'lalala.php';
break;
case 'blablabla'
include 'blablabla.php';
break;
}


Моя задача - сделать так, чтобы файлы lalala.php и blablabla.php гарантированно исполнялись только после перехода из index.php. То есть исполнение этих файлов извне должно быть исключено, подключаться они должны только через switch. Нельзя набрать в браузере blablabla.php - и получить исполненный скрипт. Банальный вопрос безопасности.

Вопрос: как это сделать эффективнее всего? Вариантов куча, поэтому теряюсь. Рефереры, сессии, что-то ещё? Заранее спасибо.



Спустя 18 минут, 33 секунды (18.10.2010 - 21:03) Invis1ble написал(а):
ancient mariner
можно через .htacess запретить, если апач стоит.
Можно определить константу специальную в скрипте, в котором свич (типа как маяк), а потом в тех скриптах, которые подключаешь проверять, определена ли константа

Спустя 20 минут, 6 секунд (18.10.2010 - 21:23) ancient mariner написал(а):
Invis1ble, большое спасибо. Склоняюсь к этому варианту smile.gif

Спустя 3 минуты, 28 секунд (18.10.2010 - 21:26) GRean написал(а):
ну вроде как можно банально отследить, откуда пришел запрос на выполнение этого скрипта. Не помню функцию, но смысл такой: если запрос был с index.php, разрешить выполнение скрипта. Или перед include писать что нибудь типа $access = true; а в самом скрипте проверять на существование и значение этой переменной

Спустя 8 минут, 11 секунд (18.10.2010 - 21:34) Invis1ble написал(а):
ancient mariner
Пожалуйста. Я сам через константу работаю

Спустя 10 часов, 35 минут, 41 секунда (19.10.2010 - 08:10) arvitaly написал(а):
Цитата
ну вроде как можно банально отследить, откуда пришел запрос на выполнение этого скрипта.

$r = current( debug_backtrace() ) ;

if ( basename( $r['file'] ) != 'index.php' )
{
echo 'Hacking Attempt' ;
exit ;
}
echo 'Файл проинклудили из ' . $r['file'] ;


Цитата
Пожалуйста. Я сам через константу работаю


Лучше выносить за пределы DOCUMENT_ROOT


Спустя 11 часов, 14 минут, 12 секунд (19.10.2010 - 19:24) anon1m написал(а):
Если стоит Apache, то добавить в .htaccess
<Files "lalala.php">
Order Deny,Allow
# запрет для всех на доступ к ресурсу
Deny from all
# разрешаем только следующим
Allow from local.
</Files>
- разрешает доступ к файлу только с сервера
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.