Apache: 特定の文字列により POST リクエストがハングする

Apache: 特定の文字列により POST リクエストがハングする

ここに、私が抱えている問題の最小限の動作例を示します。このエラーは私のサーバー/セットアップに特有のものであることはわかっていますが、何が起こっているのかまだ気になっています。m1.php と m2.php という 2 つのファイルがあります。

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);
?>

すべては期待通りに動作します([OK]をクリックすると、入力ボックスの値を含む配列が印刷されます)。ただし、入力した文字列が

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

フォームは処理されません。上記の文字列から 1 文字だけ削除しても問題なく動作します。

サーバーログを確認すると、上記の文字列が入力された場合はPOSTリクエストはログに表示されませんが、私が思いつく限りの他の文字列の場合は表示されます。問題はサーバー側にあるようで、Fiddlerはコンテンツを含むPOSTリクエストを表示します。

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

そして、異なるプラットフォームの異なるブラウザで再現できました。これは Apache の問題でしょうか? おそらく PHP の問題でしょうか? どうすればわかりますか?

私は、Web サイトでセキュリティ監査を実行しているときにこれを見つけました。SQL サーバーは実行されていませんが、監査では問題が報告されています。そして、なぜその特定の文字列がこのような動作を引き起こすのか興味があります。

編集:興味がある方のために言っておきますが、上記の動作は PHP コードにまったく依存していないことに気付きました。実際、Fiddler 経由でサーバー上に存在しないページに POST リクエストを送信した場合、投稿コンテンツに前述の文字列を含むフィールドが含まれている限り、リクエストは応答されません。したがって、これは Apache の問題であると思われます。

関連情報