Protección de contraseñas y directorios web

Un usuario ingresa a mi sitio web y llega a la página de inicio, él / ella debe estar siempre y solo en la página de inicio. Todos los demás archivos son scripts que ejecuta la página de inicio, pero el usuario nunca debe navegar hacia ellos. Así que aquí está mi diseño de directorio:
Directorio

Llegarán a Front.php y siempre deben permanecer en Front. Así que creé un archivo htaccess que tiene este código:

DirectoryIndex Front.php index.html AuthType Basic AuthName "Login" AuthUserFile /disks/*/*/*/.htpasswd Require valid-user 

En este momento, TODO requiere autenticación. Pero quiero que todo, excepto Front.php, requiera autenticación. ¿Cómo puedo excluir Front.php de la autenticación?

Además, ¿evitará esta autenticación que se ejecuten las secuencias de comandos o solo evitará que el usuario navegue hasta el archivo a través de la url?

En este momento, TODO requiere autenticación. Pero quiero que todo, excepto Front.php, requiera autenticación. ¿Cómo puedo excluir Front.php de la autenticación?

Tratar:

 SetEnvIfNoCase Request_URI ^/Front.php norequire_auth=true # Auth stuff AuthType Basic AuthName "Login" AuthUserFile /disks/*/*/*/.htpasswd # Setup a deny/allow Order Deny,Allow # Deny from everyone Deny from all # except if either of these are satisfied Satisfy any # 1. a valid authenticated user Require valid-user # or 2. the "require_auth" var is set Allow from env=norequire_auth 

Utiliza la directiva Satisfy y la establece en any , lo que significa que Require valid-user o Allow es lo suficientemente bueno. La variable norequire_auth solo se establece cuando el URI es /Front.php . Puede agregar URI adicionales incluidos en la lista blanca si lo desea, incluyendo directivas adicionales SetEnvIfNoCase .

Además, ¿evitará esta autenticación que se ejecuten las secuencias de comandos o solo evitará que el usuario navegue hasta el archivo a través de la url?

No impedirá la ejecución de las secuencias de comandos, si las incluye a través de include o require . Pero si los vincula directamente desde el contenido HTML de Front.php , Front.php el cuadro de diálogo de inicio de sesión para Front.php.

Usted dice que no desea poder ingresar otros scripts, pero agrega autenticación a él.

Si no desea ejecutar esos scripts directamente, es mejor sacarlos de la carpeta public_html, para que no puedan ser contactados desde afuera. Aún podrá incluir / requerirlos en front.php.

Los scripts de administrador se pueden mover fácilmente a un subdirectorio en el que puede agregar autenticación desde .htaccess. Si desea agregar autenticación a algunos archivos, pero no a todos, también puede optar por enviar los encabezados necesarios desde los scripts de PHP.

A menudo se ve un cheque como este al comienzo de un archivo:

 defined('MYAPPDEFINE') || die('No direct access allowed'); 

En la página de entrada (index.php, front.php, whatever), puede agregar esta línea:

 define('MYAPPDEFINE', 'Whatever value'); 

De esta forma, cada archivo que se llame directamente morirá y terminará inmediatamente, pero cuando se incluye desde front.php, la verificación tiene éxito y el archivo está incluido.

Use este conjunto de reglas:

  AuthType Basic AuthName "Login" AuthUserFile /disks/*/*/*/.htpasswd Require valid-user   allow from all  

Utilice este contenido .htaccess para evitar que las personas soliciten nada más que front.php:

 RewriteEngine On RewriteCond %{THE_REQUEST} !front.php [NC] RewriteRule .* - [F,L] 

Ahora solo fron.php estará disponible para cualquiera que acceda a su apache.

Por cierto, hasta donde yo sé, puede obligar a Apache a autenticar cualquier cosa en un directorio particular, pero no archivos individuales.