Apache: uma determinada string faz com que a solicitação POST seja interrompida

Apache: uma determinada string faz com que a solicitação POST seja interrompida

Aqui está um exemplo mínimo de trabalho do problema que tenho. Já sei que o erro parece ser específico do meu servidor/configuração, mas ainda estou curioso para saber o que está acontecendo. Existem dois arquivos, m1.php e m2.php:

m1.php

<form action="m2.php" method="post">
<br> <input type="text" name="j" />
<input type="submit"  VALUE="Ok"  />
</form>

m2.php

<?php  
print_r($_POST);
?>

Tudo funciona como esperado (quando você clica em ok, ele imprime o array com o valor da caixa de entrada) com esta exceção: se a string que eu digito for

VALUE';WAITFOR DELAY '00:00:24';--

o formulário não é processado. Excluir apenas um caractere da string acima funciona sem problemas.

Verificando os logs do servidor, quando a string acima é a entrada, nenhuma solicitação POST aparece no log, enquanto acontece com qualquer outra string que eu possa imaginar. O problema parece estar no lado do servidor, pois o Fiddler mostra a solicitação POST com conteúdo

j=VALUE%27%3BWAITFOR+DELAY+%2700%3A00%3A24%27%3B--

e eu poderia reproduzi-lo em diferentes navegadores e plataformas diferentes. Este é um problema do Apache? Talvez php? Como eu poderia saber?

Descobri isso durante uma auditoria de segurança no site. Não há nenhum servidor SQL em execução, mas a auditoria relata o problema. E estou curioso para saber por que essa string específica desencadeia tal comportamento.

Editar:caso alguém esteja interessado, acabei de notar que o comportamento descrito acima não depende em nada do código php. Na verdade, se eu enviar via Fiddler uma solicitação POST para uma página inexistente no meu servidor, desde que o conteúdo da postagem inclua algum campo com a string mencionada, a solicitação fica sem resposta. Parece que este é um problema do Apache.

informação relacionada