ファイルのアップロードを受け入れるページで作業しています。理論的には、送信されたファイルが大きすぎる場合は(応答のContent-Lengthを確認することで)検出でき、アップロードの受け入れを拒否して、HTTP413の「RequestEntityTooLarge」エラーを返します。
ただし、それだけでは不十分なようです。少なくともFirefoxは、エラーページが表示される前に、ファイルの残りの部分を送信し続けます(これには長い時間がかかる可能性があります)。
HTTP仕様では、「クライアントがリクエストを続行できないように、接続を閉じることができます」と記載されています。ただし、「STDINを閉じる」、「STDINをシャットダウンする、0」、またはその変形のいずれかを実行しても、うまくいかないようです。Firefoxは引き続きファイルを送信します。
私のmod_perlハンドラーが接続を閉じるとき、それはそれ自体とApacheの間の接続を閉じているだけだと思います。Apacheは、Apacheとクライアント間の接続を維持します。Apacheに接続をシャットダウンするように指示する方法はありますか?そうでなければ、これは素晴らしいDoSベクトルのようです。
任意の提案を歓迎します。