if( count(get_included_files()) == ((version_compare(PHP_VERSION, '5.0.0', '>='))?1:0) )
{
exit('Restricted Access');
}
Логика: PHP завершает работу, если минимальное количество count не выполняется. Обратите внимание, что до PHP5 базовая страница не считается include.
// In the base page (directly accessed):
define('_DEFVAR', 1);
// In the include files (where direct access isn't permitted):
defined('_DEFVAR') or exit('Restricted Access');
Логика: если константа isn ' t, то выполнение не начиналось с базовой страницы, и PHP прекратил выполнение.
// Call the include from the base page(directly accessed):
$includeData = file_get_contents("http://127.0.0.1/component.php?auth=token");
// In the include files (where direct access isn't permitted):
$src = $_SERVER['REMOTE_ADDR']; // Get the source address
$auth = authoriseIP($src); // Authorisation algorithm
if( !$auth ) exit('Restricted Access');
Недостаток с этим метод является изолированным исполнением, если токен-токен не предоставляется с внутренним запросом. Проверить через обратный адрес в случае конфигурации одного сервера или белый список адресов для серверной инфраструктуры с несколькими серверами или с балансировкой нагрузки.
Как и предыдущий метод, можно использовать GET или POST для передачи токена авторизации в файл include:
if($key!="serv97602"){header("Location: ".$dart);exit();}
Очень грязный метод, но также, возможно, самый безопасный и универсальный на (g7) 5: Конфигурация веб-сервера
Большинство серверов позволяют назначать разрешения для отдельных файлов или каталогов. Вы можете разместить все свои включения в таких ограниченных каталогах и настроить сервер на их отказ.
Например, в APACHE конфигурация сохраняется в файле .htaccess
. Tutorial здесь .
Обратите внимание: , однако, что настройки для сервера не рекомендуются мной, потому что они плохо переносимы на разных веб-серверах. В таких случаях, когда алгоритм deny является сложным или список запрещенных каталогов довольно велик, он может сделать сеансы реконфигурации довольно ужасными. В конце концов, лучше всего обрабатывать это в коде.
Наименее предпочтительным из-за ограничений доступа в серверных средах, но довольно мощный метод, если у вас есть доступ к файловой системе.
//Your secure dir path based on server file-system
$secure_dir=dirname($_SERVER['DOCUMENT_ROOT']).DIRECTORY_SEPARATOR."secure".DIRECTORY_SEPARATOR;
include($secure_dir."securepage.php");
Логика:
htdocs
, как ссылки будут выходить за рамки адресной системы веб-сайта. Пожалуйста, извините мои неортодоксальные правила кодирования. Любая обратная связь оценена.