Aqui está o cenário:
- Há um
index.php
arquivo na pasta raiz - alguns arquivos estão incluídos
index.php
e estão naincludes
pasta - 1 outro arquivo (
submit.php
) está na pasta raiz para a ação de envio do formulário.
Quero restringir o acesso direto do usuário aos arquivos na includes
pasta pelo htaccess. também para submit.php
. Mas incluir funcionará para index.php
arquivo. Por exemplo, se o usuário digitar www.domain.com/includes/somepage.php
, o restringirá (pode ser redirecionado para uma página de erro).
Esta é uma
mod_rewrite
solução com base pura :Isso mostrará o erro proibido de usar se o URI contiver um
/includes/
ou/submit.php
fonte
É possível usar uma diretiva Arquivos e proibir o acesso a todos os arquivos e usá-lo novamente para definir os arquivos acessíveis:
fonte
Solução baseada em 1 lin_ mod_alias:
Isso mostrará o erro proibido para /folder/file.php
fonte
^folder
.Se bem entendi, você só quer negar o acesso à pasta inclui?
Um .htaccess com uma diretiva 'DENY FROM ALL' colocada na pasta de inclusões seria suficiente.
fonte
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 um
DOCROOT/.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: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.
fonte
Dependendo de outras opções possíveis definidas em um nível superior, você pode precisar colocar o seguinte no arquivo .htaccess no diretório de inclusão:
Eu me deparei com isso quando o diretório superior definiu a autenticação básica, incluindo a linha:
Isso estava impedindo que minha negação fosse efetivada porque os usuários foram autenticados.
fonte
Você pode adicionar o comando abaixo ao
.htaccess
arquivoEle exibirá a mensagem "nada está aqui" no caso de acesso não autorizado.
Se você deseja redirecionar por um código de erro para uma determinada página, pode definir um comando da seguinte maneira:
Ele será redirecionado para a
/errors/404.html
tela e mostrará a página personalizada não encontrada.fonte