Aquí está el escenario:
- Hay un
index.php
archivo en la carpeta raíz - se incluyen algunos archivos en los
index.php
que se encuentran en laincludes
carpeta. submit.php
Hay otro archivo ( ) en la carpeta raíz para la acción de envío de formulario.
Quiero restringir el acceso directo del usuario a los archivos en la includes
carpeta por htaccess. también para submit.php
. Pero include funcionará para el index.php
archivo. Por ejemplo, si el usuario escribe www.domain.com/includes/somepage.php
, lo restringirá (puede ser redirigido a una página de error).
Esta es una
mod_rewrite
solución de base pura :Esto mostrará un error prohibido de usar si URI contiene
/includes/
o/submit.php
fuente
Es posible usar una directiva de Archivos y no permitir el acceso a todos los archivos, luego usarlo nuevamente para configurar los archivos que son accesibles:
fuente
Solución basada en 1 liner mod_alias:
Esto mostrará un error prohibido para /folder/file.php
fuente
^folder
.Si entiendo correctamente, ¿solo quiere negar el acceso a la carpeta de inclusiones?
Un .htaccess con una directiva 'DENY FROM ALL' colocada en la carpeta de inclusión haría el truco.
fuente
Su Q viene en dos partes, las soluciones de jeroen y anubhava funcionan para la parte I: denegar el acceso a / incluye. Anubhava también funciona para la parte II. Prefiero el último porque utilizo un de
DOCROOT/.htaccess
todos modos y esto mantiene todo ese control en un archivo.Sin embargo, lo que quería discutir es el concepto de "negar el acceso a
submit.php
". Si no quieres usarsubmit.php
, ¿por qué tenerlo en DOCROOT? Sospecho que la respuesta aquí es que lo usa como objetivo de acción en algunos formularios y solo quiere que se active cuando se envía el formulario y no directamente, por ejemplo, desde un robot de spam.Si esto es cierto, entonces no puede usar la parte II de anubhava, ya que esto hará que su formulario falle. Lo que puede hacer aquí es (i) con la
.htaccess
verificación para asegurarse de que el referente sea su propia página de índice:Y (ii) dentro de su generador de formularios PHP index.php incluya algunos campos ocultos para una marca de tiempo y validación. La validación podría ser, digamos, los primeros 10 caracteres de un MD5 de la marca de tiempo y algún secreto interno. Al procesar el envío, puede (i) validar que la marca de tiempo y la validación coinciden, y (ii) la marca de tiempo se encuentra dentro de, digamos, 15 minutos de la hora actual.
Esto puede evitar el envío de correo no deseado, ya que la única forma práctica en que un spammer podría obtener un par válido de marca de tiempo / validación sería analizar un formulario, pero este raspado solo tendría una vida útil de 15 minutos.
fuente
Dependiendo de otras posibles opciones establecidas en un nivel superior, es posible que deba poner lo siguiente en su archivo .htaccess en su directorio de inclusiones:
Me encontré con esto cuando el directorio superior definió la autenticación básica, incluida la línea:
Esto impedía que mi negación de todos entrara en vigor porque los usuarios estaban autenticados.
fuente
Puede agregar el siguiente comando al
.htaccess
archivoMostrará el mensaje "no hay nada aquí" en caso de acceso no autorizado.
Si desea redirigir mediante un código de error a una página determinada, puede definir un comando de la siguiente manera:
Redirigirá a la
/errors/404.html
pantalla personalizada y no mostrará la página personalizada.fuente