Для нас - базирующиеся адресные сведения моя компания использовала GeoStan. Это имеет привязку для C и Java (и мы создали привязку Perl). Обратите внимание, что это - коммерческий продукт и не дешево. Это довольно быстро, хотя (~300 адресов в секунду) и предлагает функции как сертификация CASS (скидка массовой рассылки USPS), DPV (Проверка пункта доставки) установка флага и геокодирование LON/LAT.
существует модуль Perl Гео-:: PostalAddress, но это использует эвристику и не упомянуло другие функции для GeoStan.
Редактирование: некоторые упомянули, 'что делали его самостоятельно', если Вы действительно решаете сделать это, хороший источник информации для запуска с американский Набор данных переписи Тигра , который содержит большую информацию о США включая адресную информацию.
Изучали ли вы возможности ограничения Apache (в отличие от Perl)? Я не знаю в деталях, как директива LimitRequestBody
справляется со слишком большими запросами, но по крайней мере теоретически это похоже на настройку, предназначенную для блокирования атак.
Да, не имеет значения, что Perl делает с STDIN
или STDOUT
, Apache все равно разрешит загрузку, прежде чем он даже проверит, что происходит с вашим CGI. Вы можете закрыть STDIN
или STDOUT
или даже exit ()
(хотя вы не можете этого сделать, поскольку ваш процесс постоянный), но ни один из них не будет любое действие до после Apache не завершит принятие запроса POST полностью. Точно так же с любыми типами заголовков состояния, которые вы можете сгенерировать, например 413
для «Запрос слишком большой».
Следовательно, вам необходимо, чтобы Apache отклонял запросы POST сверх определенного размера, чтобы это работало, например, используя LimitRequestBody
как , предложенный Пеккой .