Seu Q vem em duas partes, as soluções jeroen e anubhava funcionam para a parte I - negando acesso a / inclui. anubhava também trabalha para a parte II. Eu prefiro o último porque eu uso umDOCROOT/.htaccess
qualquer maneira e isso mantém todo esse controle em um arquivo.
No entanto, o que eu queria discutir é o conceito de "negar acesso a submit.php
". Se você não quiser usarsubmit.php
, por que tê-lo no DOCROOT? Eu suspeito que a resposta aqui é que você o usa como um alvo de ação em alguns formulários e só deseja que seja acionado quando o formulário é enviado e não diretamente, por exemplo, de um spambot.
Se isso for verdade, você não poderá usar a parte II de anubhava, pois isso fará com que seu formulário falhe. O que você pode fazer aqui é (i) .htaccess
verificar se o referenciador era sua própria página de índice:
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
E (ii) dentro do seu gerador de formulários index.php do PHP incluem alguns campos ocultos para um registro de data e hora e validação. A validação pode ser, digamos, os 10 primeiros caracteres de um MD5 do registro de data e hora e algum segredo interno. Ao processar o envio, você pode (i) validar se o carimbo de data e hora corresponde e (ii) o carimbo de data e hora está, digamos, a 15 minutos do horário atual.
Isso pode impedir o envio de spam, pois a única maneira prática de um spammer obter um par de carimbo de data / hora válido seria analisar um formulário, mas esse rascunho teria apenas uma vida útil de 15 minutos.