В моем веб-приложении есть набор модулей.У каждого модуля есть «основной» php-скрипт, который загружает подмодули на основе запроса, отправленного главному модулю:
//file: clientes.php
//check for valid user...
//import CSS and JS...
switch( $_GET["action"] )
{
case "lista" : require_once("clientes.lista.php"); break;
case "listaDeudores" : require_once("clientes.listaDeudores.php"); break;
case "nuevo" : require_once("clientes.nuevo.php"); break;
case "detalles" : require_once("clientes.detalles.php"); break;
case "editar" : require_once("clientes.editar.php"); break;
default : echo "<h1>Error</h1><p>El sitio ha encontrado un error.</p>";
}
Этот основной модуль имеет дело с безопасностью и импортирует много ресурсов, необходимых всем подмодулям.Большая проблема проявляется, когда пользователь запрашивает любой из подмодулей, минуя все меры безопасности на главном модуле!Моя идея состояла в том, чтобы добавить строку в каждый подмодуль, чтобы проверить, вызывается ли он напрямую и запретить доступ, или он вызывался через другой скрипт, и продолжить.Меньшее, что я хотел бы сделать, это повторить проверку безопасности для каждого отдельного файла, поскольку он выполняет несколько запросов к базе данных.
Знает ли скрипт php, был ли он вызван с помощью require_once()
илипрямой звонок?Я пытался реализовать какую-то ловушку $_SERVER['REQUEST_URI']
и $_SERVER['PHP_SELF']
, но мне было интересно, есть ли какой-нибудь элегантный способ сделать это.