私の webapp にはたくさんのモジュールがあります。各モジュールには、メイン モジュールに送信されたクエリに基づいてサブモジュールをロードする「メイン」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']
これを行うエレガントな方法があるかどうか疑問に思っていました。