Антифлуд: где хранить данные?

V1
На сайте с 24.10.2012
Offline
64
666

Понадобилось ограничить частоту обращений к сайту с одного ip. Скажу сразу почему штатные средства меня не устраивают:

- нужно делать исключения для яндекса и гугла, а поскольку ip у них меняются, а юзер агент легко подделать, то скрипт должен еще и делать обратный dns-запрос (сохраняя результат в кэш)

- нужно писать в лог ip и хосты забаненных

- при превышении лимита нужно выводить каптчу

Проще все это сделать в движке сайта, но возникает вопрос: а где лучше хранить количество запросов с точки зрения производительности? Многие предлагают файлы и даже бд (которая итак нагружена), но такая "защита" скорее сама положит сайт. Самое быстрое из того, что я нашел - memcache, но насколько это будет оправдано и есть ли другие варианты?

siv1987
На сайте с 02.04.2009
Offline
427
#1

БД оптимальный вариант если оптимизировано и хостинг не дышит на ладом.

А memcached на сколько я знаю для кеширования в ОЗУ.

O
На сайте с 29.05.2008
Offline
195
#2

А как это обратный DNS запрос? Я могу по IP узнать хост???

По сабжу, я выбрал файлы + ОЗУ.

Слава Шевцов
На сайте с 23.07.2005
Offline
370
#3
vyacheslav12:
Самое быстрое из того, что я нашел - memcache, но насколько это будет оправдано и есть ли другие варианты?

Можно мемкеш, конечно же. Это хорошее решение. Если хотите что-то более подходящее - Redis. Redis как раз хорошо заточен под счётчики.

Неизменность точки зрения неизменно порождает иллюзию понимания.
V1
На сайте с 24.10.2012
Offline
64
#4
Слава Шевцов:
Можно мемкеш, конечно же.

В принципе я так уже и сделал и работает как надо, просто никогда не слышал, чтобы его кто-то использовал в таких целях.

ortegas:
А как это обратный DNS запрос? Я могу по IP узнать хост???

да, это делает стандартная пхпшная функция gethostbyaddr.

neznaika
На сайте с 28.06.2006
Offline
356
#5

Редиску.

siv1987:
дышит на ладом

втф?

Дорого покупаю настоящие сайты. Не инвестирую деньги и не беру кредиты.
Слава Шевцов
На сайте с 23.07.2005
Offline
370
#6
vyacheslav12:
В принципе я так уже и сделал и работает как надо, просто никогда не слышал, чтобы его кто-то использовал в таких целях.

А его и нельзя использовать для счётчиков - нетранзакционная база. Но в вашем случае это без разницы - если затрётся пара-тройка плюсодинов, то ничего страшного не произойдёт.

P
На сайте с 09.05.2013
Offline
5
#7
vyacheslav12:
Самое быстрое из того, что я нашел - memcache, но насколько это будет оправдано и есть ли другие варианты?

можно еще посоветовать apc, xcache, тоже умеют сохранять в ОЗУ, можно еще MEMORY таблицы в MySQL, но это уже будет значительно медленнее, но можно использовать почти всю мощь инструментария MySQL

Пишу статьи для продвижения в MiraLinks (/ru/forum/794039) за 100 рублей/статья!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий