Como tornar o Apache ErrorDocuments inacessível por solicitações normais de http?

2

A documentação do Apache explica , como podemos configurar páginas de erro personalizadas para diferentes erros HTTP , identificado por seu código de status (401, 403, 404, 500, 503 e assim por diante).

No entanto, o que este documento diz é essencialmente isto: no caso de um erro, o Apache gera uma sub-requisição interna para um documento.

Por exemplo, um

ErrorDocument 404 /errors/dunno.html
ErrorDocument 500 /errors/sux.html
As linhas

resultarão que os documentos /errors/dunno.html e /errors/sux.html serão exibidos no caso de um erro 404 (arquivo não encontrado) ou 500 (servidor interno).

No entanto, isso também significa que uma solicitação http para https://my.server/errors/sux.html servirá esse sux.html como um arquivo comum.

Não é isso que eu quero.

Eu quero que as páginas de erro vivam do DocumentRoot , e elas devem estar totalmente inacessíveis com as consultas comuns do http. O único caso, quando eles devem ser atendidos, se o Apache tiver uma resposta http (não-200) que seja afetada por uma diretiva ErrorDocument em sua configuração.

Posso de alguma forma fazer isso?

    
por peterh 14.07.2018 / 10:36

1 resposta

-1

Você já testou o ErrorDocument ? Duas coisas que notei quando fiz isso ...

Eu tentei configurar uma API baseada em URL falsa, em que o erro 404 era meu script PHP principal da API, que retornaria o conteúdo depois de analisar o URL solicitado. Funcionou normalmente em um navegador e o URL exibido era o solicitado, NÃO o ErrorDocument .

No entanto, o AngularJS estava reclamando do código de status 404, embora o conteúdo da mensagem fosse o json solicitado.

Então ...

Apache e ErrorDocument s podem / irão exibir o URL solicitado, não o URL do ErrorDocument . Então, a menos que eles consigam adivinhar seu esquema de nomenclatura, nenhum acesso direto é possível.

O cliente ainda recebe um 404 ou outro código de status HTTP apropriado, não um 200 / OK.

O Apache registra a solicitação como um 404, mostrando a URL solicitada, se configurada para registrar dessa maneira.

Apenas testei na instalação padrão do apache2.4.x em ambos os sistemas Debian e Ubuntu usando configuração padrão diferente de adicionar uma diretiva ErrorDocument 404 /test.html .

    
por 15.07.2018 / 17:21