deshabilitar el acceso a los archivos incluidos

tengo una pequeña pregunta …

Quiero deshabilitar el acceso directo a mis archivos incluidos. (ejemplo header.tpl.php, footer.tpl.php, confic.inc.php, db-connect.inc.php ect.)

pero primero permítanme explicar lo que quiero hacer, quiero permitir el acceso a todos mis archivos incluidos (index.php) y deshabilitar los archivos con un encabezado 404 para el acceso directo.

ahora encontré un fragmento de php genial y lo modifiqué (el encabezado 404 y 404 incluyen)

en mi index.php es este código:

define('MY_APP',true); 

en mi templatefiles es este código:

 if(!defined('MY_APP')) { header('HTTP/1.1 404 Not Found'); include('./../error/404.php'); die; } 

¿Ves algún problema de seguridad u otro problema con este código?

Saludos cordiales bernte

¿Ves algún problema de seguridad u otro problema con este código?

En caso de que su servidor se vuelva a configurar para que el .php no se ejecute más, su código fuente será visible.

Pero al lado de eso, su enfoque es una forma bastante común de hacer eso. Sin embargo error/404.php podría contener el header('HTTP/1.1 404 Not Found'); línea para que no tenga que repetirla para cada archivo. Lo mismo para el die; statement.

En cada archivo de biblioteca / plantilla, etc.

 require('../error/include_file.php'); 

En include_file.php :

 if(!defined('MY_APP')) { header('HTTP/1.1 404 Not Found'); include('404.php'); die; } 

Tal vez sea mejor para su diseño. No te repitas tanto.

¿Por qué no simplemente colocarlo encima de la carpeta public_html o lo que sea que use como la carpeta html predeterminada e incluir con ../../. Luego estaría disponible para los scripts, pero el público obtendría un archivo 404 / default no encontrado. Lo hago con archivos de configuración que contienen contraseñas y para que ningún público pueda acceder a ellas.

 if (basename($_SERVER['SCRIPT_FILENAME']) == basename(__FILE__)) { //header("Location: index.php"); exit("NOT ALLOWED"); }