Testando códigos de status HTTP

1

Estou executando um servidor Apache Tomcat. Fazendo alguns testes de segurança eu notei que meu servidor está retornando um código de status 200 HTTP da página de erro padrão quando tento acessar um elemento inexistente em vez de retornar um código de status 404 e me redirecionar para a página de erro padrão. Eu suspeito que esta não é a única falha com este problema.

Alguém pode me sugerir um processo para verificar os códigos de status HTTP mais comuns?

    
por amusero 29.03.2012 / 10:00

1 resposta

3

Eu usaria um script Bash que invoque netcat uma vez para cada tipo de resposta, com entrada apropriada para gerar cada tipo diferente de código de resposta. Eu iria canalizar isso embora grep para verificar a resposta correta e ecoar uma mensagem em STDERR se não estiver correto.

Isso deve ser relativamente fácil para os intervalos 2xx, 3xx e 4xx, supondo que existam URLs no seu servidor que realmente gerem cada código de resposta diferente. Os intervalos 5xx referem-se a erros do lado do servidor, portanto, para invocá-los deliberadamente, você precisará configurar URLs específicas em seu servidor que causam cada erro. O intervalo 1xx provavelmente é melhor testado usando um cliente HTTP mais completo, como curl ou wget .

Existe mais do que uma maneira de resolver este problema.

Existe um erro desagradável em alguma versão do netcat , o que significa que sai assim que terminar de ler a partir de STDIN. Além disso, as páginas man fornecidas com esta versão com bugs incluem um exemplo que não funciona. A solução alternativa é a opção -q <number> , que especifica um número de segundos para aguardar uma resposta antes de sair.

echo -ne "GET / HTTP/1.1\nHost: example.com\n\n" | nc -q 1 example.com 80 | grep -q "HTTP/1.1 301" || echo "HTTP 302 test failed!" >&2
    
por 29.03.2012 / 11:54