2014-01-24 5 views
0

Наше существующее приложение имеет основных механизаторов для предотвращения злоупотреблений, таких как повторное угадывание пароля, отправка спама и т. Д. С использованием таблицы MySQL. Я смотрю, если это практично, чтобы внедрить это в кассандру, но я еще недостаточно знаком с кассандрой, чтобы узнать, является ли предложенная ниже идея хорошей идеей или простой глупой. : DОтслеживание и дросселирование неудачных попыток входа в cassandra

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

-- Table to keep track of currently locked accounts, IP addresses, etc 
create table throttle_lock(
    uid text primary key 
); 

-- This IP got locked for 300 seconds 
insert into throttle_lock (uid) values('4.5.5.6') using ttl 300; 

-- Table to keep track of recent suspicious activity 
create table throttle_counter(
    uid text, 
    time timeuuid, 
    primary key (uid, time) 
); 

-- Store recent activity, such as sign in failure, for 60 seconds 
insert into throttle_counter (uid,time) values('1.2.3.4', now()) using ttl 60; 
insert into throttle_counter (uid,time) values('[email protected]', now()) using ttl 60; 
insert into throttle_counter (uid,time) values('1.2.3.4', now()) using ttl 60; 
insert into throttle_counter (uid,time) values('1.2.3.4', now()) using ttl 60; 

-- The following logic occurs, for example, on sign in. 
is_locked(uid) { 
    results = 'select * from throttle_lock where uuid='1.2.3.4''; 
    if(results > 0) { 
     return locked; 
    } 
    results = 'select * from throttle_counter where uid='1.2.3.4''; 
    if(results > 3) { 
     insert into throttle_counter (uid) ('4.5.5.6') using ttl 300; 
     return locked; 
    } else { 
     return not_locked; 
    } 
} 

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

ответ

0

Кассандра потрясающе, но я думаю, что для чего-то подобного вам было бы лучше с чем-то вроде redis или memcached.

Основная причина заключается в том, что redis/memcached не нуждается в каком-либо обслуживании; Кассандра нуждается в ремонте и уплотнениях.

Мой первый выбор для этого было бы Redis, так как это делает развитие этой функции тривиальное (нет необходимости для создания таблицы, установка/настройка занимает менее 5 минут)

Поскольку вы храните данные только для 300s вы также не нужно иметь много баранов (memcached и redis должны соответствовать данным в памяти)

+0

Мой вопрос был о решении на основе Кассандры. Конечно, если бы мы смогли придумать более сложную/сложную систему, это был бы отличный вариант, который стоит исследовать. – Jacob

Смежные вопросы