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 usar submit.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:
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
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.