Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Оцените логику зищиты от накрутки голосований (https://javascript.ru/forum/project/9548-ocenite-logiku-zishhity-ot-nakrutki-golosovanijj.html)

greatilya 24.05.2010 04:39

Оцените логику зищиты от накрутки голосований
 
Логика действий рейтинга
1. Регистрация пользователя
- генерация кода активации e-mail
- отправка кода активации на e-mail пользователя
- сохранение кода активации в таблице пользователя

2. Активация пользователя по e-mail
- проверка идентичности кода активации

3. Установка COOKIE
- генерация уникального кода для куков
- сохранение сгенерированного кода в таблице пользователя
- создаем куку с именем «user»+id_пользователя, и значением сгенерированного кода
- выдаем пользователю сообщение вида: «Вы сможете проголосовать через сутки»

4. Возвращение пользователя на следующий день
- проверка значения куков на идентичность
4.1. Куки не совпадают
- задаем новые куки, с новым сгенерированным числом
- выдаем сообщение, что «куки были повреждены и т.д. … чтобы проголосовать вернитесь на следующие сутки»
- возвращаемся к пункту 4
4.2. Куки совпадают
- появляется ссылка «Проголосовать»

5. Голосование
- считываем ip пользователя
- проверяем, голосовал ли кто-то сегодня с этого ip
5.1. С этого ip уже голосовали
- Вывод пользователю информации о невозможности голосования, т.к. с данного ip адреса уже голосовали
5.2. С этого ip не голосовали
- обновляем код в куках и записываем его в таблицу пользователя
- прибавляем 1 голос в голосовании
- Выдаем сообщение об успешном голосовании и что проголосовать еще раз будет возможно на следующий день
- возвращаемся к пункту 4

B@rmaley.e><e 24.05.2010 07:57

Капча при регистрации есть? Если нет, то толку от всего остального мало — это лишь усложнит жизнь накрутчикам. (Как и сама каптча, впрочем)

greatilya 24.05.2010 08:40

Значит рекомендуете поставить капчу? Ну если это важно то конечно поставим. Можете посоветовать капчу? (просто знаю много разных, хотелось бы узнать мнение профи)

B@rmaley.e><e 24.05.2010 09:46

Боту-скрипту потенциально не проблема зарегистрироваться, сбегать на мыло, подтвердить регистрацию, подцепить куки, проголосовать, сменить IP и зарегистрировать новый аккаунт (Собрать, допустим, базу из 1000 аккаунтов и каждый день с каждого из них голосовать).

Каптч, к сожалению, порекомендовать не могу. Сам собирался использовать kcaptcha (с небольшими доработками), но необходимость отпала.

Стойкость каптчи зависит от метода взлома. Мне известны 3:
— Математические. С помощью различный алгоритмов и обученных нейросетей производится автоматическое рапознавание. Нейросети обычно обучаются большим количеством исходных данных (читай — вариантами цифр). В таком случае Kcaptcha кажется мне достаточно надежной. Особенно если прикрутить туда побольше разных шрифтов.

— Брут-форс. При небольшом количестве вариантов вероятность успешного брута возрастает. Например, если у нас на каптче 3 цифры, то это всего 999 вариантов, т.е. из 1000 запросов как минимум один должен пройти (с теорвером не знаком, не пинать). Это касается не столько привычных каптч ввода текст, сколько всяческих альтернатив вроде "передвинь квадрат на круг" и т.д.

— Китайцы. Дешевая раб. сила, набирающая за пару центов текст с картинки. Против таких приемов нет. Хотя можно, например, использовать национальный алфавит. Вряд ли у этих "обезьянок" есть под рукой клава с русским алфавитом. (Ну или использовать это :) )

P.S. А зачем Вы проверяете, голосовали ли с IP, если у Вас пользователь зарегистрирован? Проверяйте еще и id юзера.

Gozar 24.05.2010 09:56

никакой регистрации, никаких капчей, проверка по ip и всё. Сообщение выдавать "спасибо что проголосовали". Хотите совсем жёстко - привяжите к ip+email. А то со всеми вашими суперпроверками вообще голосовать не будут. Имея же базу с ip можно отсеить ненужный спам(на случай голосования через прокси).

greatilya 24.05.2010 12:10

Цитата:

Сообщение от B@rmaley.e><e
А зачем Вы проверяете, голосовали ли с IP, если у Вас пользователь зарегистрирован?

Чтобы избежать(уменьшить) накрутку из другого браузера.
Цитата:

Сообщение от B@rmaley.e><e
Проверяйте еще и id юзера

Ну да, с 1 аккаунта только 1 голосование в сутки, это не уточнил.
B@rmaley.e><e,
А что вы думаете об этой капче?

Цитата:

Сообщение от Gozar
никакой регистрации, никаких капчей, проверка по ip и всё. Сообщение выдавать "спасибо что проголосовали". Хотите совсем жёстко - привяжите к ip+email. А то со всеми вашими суперпроверками вообще голосовать не будут. Имея же базу с ip можно отсеить ненужный спам(на случай голосования через прокси).

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

Gozar 24.05.2010 13:38

Цитата:

Сообщение от greatilya (Сообщение 56301)
Чтобы избежать(уменьшить) накрутку из другого браузера.

Ну да, с 1 аккаунта только 1 голосование в сутки, это не уточнил.
B@rmaley.e><e,
А что вы думаете об этой капче?


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

ip+email (ip + активированный аккаунт по email) решают вашу задачу, как я уже и сказал + фильтр по ip(на случай прокси) во время обработки стат.данных. Всё, абсолютно всё, остальное решается либо программно либо командой кликунов. Любая защита придуманная вами будет обходиться простыми методами профессионального программиста купленного на час, два. И не забывайте что вы сами можете дыр наделать своей защитой :)

greatilya 24.05.2010 14:02

Gozar,
А как вы предлагаете привязываться к ip? Не давать пользователям заходить с ip, отличного от того, с которого зарегистрировались? Или как? ... не совсем Вас понял...

Gozar 24.05.2010 14:28

greatilya,
1. жестко по ip: 1 ip 1 голос в день
2. мягко по ip: 1 ip несколько email(аккаунтов) в день

+ фильтрация на китайские прокси(по необходимости)

greatilya 24.05.2010 15:06

Цитата:

Сообщение от Gozar
китайские прокси

Это как я понимаю прокси-сервера из Китая... А отлавливать прокси других стран не нужно? Почему именно китайские? :)

Gozar 24.05.2010 16:10

потому что их больше ;)
отлавливайте все.

B@rmaley.e><e 24.05.2010 16:28

Цитата:

Сообщение от greatilya
B@rmaley.e><e,
А что вы думаете об этой капче?

Выглядит неплохо. Буквы, правда колеблются по синусоиде, но расположены достаточно близко друг к другу. Если эту каптчу, согласно википедии, используют фейсбук и твиттер, она должна быть надежна.

greatilya 24.05.2010 18:45

Вобщем сейчас тогда склоняюсь к проверке прокси, активация по е-майл, капча при регистрации.
Если кто-то сможет еще что-то подсказать. то буду очень признателен...

Gozar 24.05.2010 20:50

скан паспорта и юридически заверенный письменный договор ;)

B~Vladi 25.05.2010 00:12

Что касается каптчи, то я думаю, что для защиты от ботов лучше использовать несколько алгоритмов и время от времени изменять их, как сделано на webmoney. По крайней мере боты отпадут.
Ну а если голосование серьёзное (выборы например:D ), без регистрации никак. Отпадают и IP и куки.

Например, на сайте csmon.ru я за свой сервер набивал по 50 голосов в день (ручками), мне этого хватало для пребывания в топе, пока они снова не обнулят голоса. Дк там ip+cookie+каптча:)

greatilya 25.05.2010 04:32

B~Vladi,
как по Вашему мнению, какая система лучше? Та система которую описал в первом сообщении используется на таких воротилах как l2top.ru, la2.mmotop.ru ... и т.д. Может и не стоит изобретать велосипед?

По поводу прокси: сейчас зашел на сайт l2top.ru через сервис hideme.ru. Как я понимаю он эмулирует заход с прокси сервера. Поскольку сайт запустился, предположу, что на сайте l2top.ru нет фильтра на прокси... Так может в этом есть смысл? И может запрет на использование прокси повлечет за собой некие последствия?

Цитата:

Сообщение от Gozar
скан паспорта и юридически заверенный письменный договор

а так можно и за решетку угодить, насколько я знаю есть закон о защите личных данных... )

Gozar 25.05.2010 08:36

Цитата:

Сообщение от greatilya (Сообщение 56425)
а так можно и за решетку угодить, насколько я знаю есть закон о защите личных данных... )

Вы это скажите всем регистраторам доменов в зоне ru, которые согласно закону могут у вас требовать скан паспорта!

Kolyaj 25.05.2010 09:27

Цитата:

Сообщение от greatilya
а так можно и за решетку угодить, насколько я знаю есть закон о защите личных данных... )

Так это если вы разглашать их будете.

greatilya 25.05.2010 10:06

Цитата:

Сообщение от Kolyaj
Так это если вы разглашать их будете

ИМХО: ну это то да, просто мне кажется там есть еще какие-нибудь ньюансы, вряд ли каждый желающий может у себя на сайте собирать конфиденциальные данные.
Ну да и ладно, немного отошли от темы. Нужен ли фильтр на прокси или он только навредит проекту? Как вы думаете?

B~Vladi 25.05.2010 11:28

Цитата:

Сообщение от greatilya
как по Вашему мнению, какая система лучше?

Всё зависит от требований.
Цитата:

Сообщение от greatilya
Нужен ли фильтр на прокси или он только навредит проекту?

Нужен.

greatilya 25.05.2010 12:30

Всем спасибо!

Скоро покажу что получилось...

mat_ppc 12.06.2010 18:54

Если вы будите по IP людей считать, имеете хороший шанс потерять %80 потенциальных голосующих. Вобще по IP кого-то ограничивать возможно при условии, если у всех IPшники выделенные, короче используйте IP в других целях.
Если голосование простое, то одной капчи достаточно.
Если нужен учёт активности пользователей, то Id пользователя+капча.
Если вас будут спамить, меняйте сразу же алгоритм защиты(капчи) или блочте по IP (крайний случай). Правильно и своевременно определите атаку - это и будет ваша лучшая защита.

KOLANICH 14.06.2010 21:46

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 56285)
(Ну или использовать это :) )

супер капча
но китайцы могут заюзать это:>

FRIE 20.07.2010 10:35

я бы сделал так, если 1 пользователь может проголосовать только 1 раз в день то я сделал бы таблицу в которую писал следующие данные, - id(autoincrement) , id пользователся, id статьи или чего у вас там, оценку, и время в которое проголосовал, а дальше делал бы при голосовании проверку, если существует такая запись и время от текущего меньше 24 часов то не давал бы голосовать, и еще сделал бы скрипт который каждый час удаляет из таблицы записи которые старше 24 часов. очень просто , удобно, минимум кода , минимум гемора, каптча при голосованнии имхо бред, просто голосовать надо давать зарегеным юзерам, а каптчу давать только при регистрации. Я практически так же сделал у себя. Посмотрите например на rutube , у них разве надо каптчу вводить когда голосуешь? голосование там прикрепляется к ролику и всё. ip и cookie не спасут тебя о ботов, например в корбине при каждом подключении у тя новый айпишник, а куки почистить может даже школьник. Труднее всего регестрировать постоянно аккаунты , но и сдесь грабли не надо под ноги ставить а то все твои юзеры плюнут на твой сайт и уйдут куда подальше. если у тебя будет 1 000 000 юзеров то подумай сам, если 1 школьник накрутит себе даже 200 голосов, то его рейтинг не особо изменится по отношению к другим, это надо понимать и не заниматься ерундой

~online~ 23.07.2010 23:41

Какой-то студент однажды на лекции видно от нефиг делать придумал символическую каптчу и все за ним с тех пор повторяют. Да сколько угодно более устойчивых иных вариантов проверки существует, нежели эта дурацкая символика : /

FRIE 29.07.2010 13:07

Цитата:

Сообщение от ~online~ (Сообщение 64972)
Какой-то студент однажды на лекции видно от нефиг делать придумал символическую каптчу и все за ним с тех пор повторяют. Да сколько угодно более устойчивых иных вариантов проверки существует, нежели эта дурацкая символика : /

приведите примеры пожалуйста


Часовой пояс GMT +3, время: 00:48.