Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Фильтрация по IP


Автор: FishHunter 24.10.2013, 22:07
Добрый вечер всем,

Понадобилось мне замутить сабж. Есть база айпишек посещение с которых крайне нежелательно для меня smile Собственно вопрос, как грамотней реализовать это дело?
Все на что меня хватило это следующее:
1. Создаем blacklist.db где ключ это нежелательный айпишник
2. Брать из окружения $ip=REMOTE_ADDR
3. открываем db и проверяем existом существует ли blacklist{$ip} если нет то на сайт иначе лесом smile

Но, например мне надо не пускать все серферов из диапазона к примеру 188.168.236.0/255 тогда придется все 255 айпишек делать ключами :( а если таких диапазонов будет много то и вес blacklist.db может вырасти, память при каждом посещении будет расходоваться, тормозить начнет все и т.д.
Может есть какой другой способ?

С уважением ...

Автор: tzirechnoy 25.10.2013, 19:03
Если адресов планируется немного, и можно их так или иначе забить в исходник -- то можно взять, например, Net::IPAddress::Filter. Но он не хранит адреса.

Автор: FishHunter 26.10.2013, 09:51
Вот что у меня за привычка, сначала на форуме кипишь поднять. Потом думать/искать начать. Может так я себя стимулирую smile Короче решил сие с помощью модуля Net::CIDR::Lite; Ему можно скармливать хоть сидры, хоть диапазоны. Работает с v4,v6. Ищет то что мне нужно одной строкой и очень быстро.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)