Я работаю над страницей, которая принимает файлы для загрузки. Теоретически я могу определить, когда файл, который они отправляют мне, слишком велик (просмотрев Content-Length их ответа), и отказаться принимать загрузку, возвращая ошибку HTTP 413 «Request Entity Too Large».
Однако кажется, что просто этого недостаточно - по крайней мере, Firefox будет продолжать отправлять остальную часть файла (что может занять много времени), прежде чем она покажет мою страницу с ошибкой.
В спецификации HTTP говорится, что я: "МОЖЕТ закрыть соединение, чтобы предотвратить продолжение запроса клиентом ". Однако выполнение либо 'close STDIN', 'shutdown STDIN, 0', или другого варианта этого не помогает - Firefox по-прежнему отправляет файл.
Я подозреваю, что, когда мой обработчик mod_perl закрывает соединение, он просто закрывает соединение между собой и Apache; Apache поддерживает соединение между собой и клиентом. Есть ли способ сказать Apache закрыть соединение? В остальном это кажется отличным вектором DoS.
Любые предложения приветствуются.