Внедрение мошеннической системы голосования с использованием SimpleDB - PullRequest
1 голос
/ 23 мая 2011

Я хотел бы внедрить систему голосования со всеми данными, хранящимися в Amazon SimpleDB.Внешний интерфейс также работает на Amazon EC2.Моя главная проблема - стоимость услуги.

Система голосования должна быть защищена от мошенничества.То есть каждому посетителю разрешается только один голос за выборы, и нет учетных записей пользователей.Я рассмотрел вопрос о сохранении элемента SimpleDB для каждого голоса вместе с IP-адресом, с которого он поступил.Тогда я бы вставил новый голос только в том случае, если для этой пары IP / выборы нет записи.

Однако это звучит очень дорого с точки зрения хранения и обработки.Мне нужно было бы получить все голоса, чтобы подсчитать их, чтобы отобразить обновленный результат.

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

Какая ваша рекомендация?

1 Ответ

5 голосов
/ 23 мая 2011

Давайте сначала рассмотрим вашу главную проблему - стоимость.Предположим, у вас есть 1 000 000 голосов в вашей системе.Каждый голос представлен одним элементом Simpledb, и каждый элемент содержит три атрибута, метку времени, фактический голос и уникальное значение, идентифицирующее пользователя (я вернусь к этой части позже).

Теперь, страница обзора simpledb дает нам простой способ расчета фактического размера хранилища элемента.

Amazon SimpleDB измеряет размер ваших оплачиваемых данных, добавляя необработанный размер байта данных, которые вызагрузка + 45 байтов служебной информации для каждого элемента, имени атрибута и пары атрибут-значение.

Давайте посчитаем с небольшим запасом, если вы решите включить больше данных и скажем, что каждый элемент / голособойдется вам в 300 байт памяти.Общий размер хранилища для ваших данных будет ~ 286 МБ.Хорошо в пределах лимита бесплатного уровня.Тогда есть стоимость вставки ваших предметов, но это, вероятно, будет незначительным.Затраты связаны с подсчетом голосов, но, как вы уже предлагали, кэширование может значительно облегчить это.

Я добавил эти цифры в превосходный сервис Простой ежемесячный калькулятор Amazon , чтобы получить приблизительную цифру.и получил ~ 4 доллара в месяц за 1 ГБ хранилища, 1М ставит, 250К получает и 100К выбирает.Теперь, по моему опыту, очень трудно приблизиться к использованию заранее, поэтому вы должны следить за нашим использованием по мере продвижения.Отчеты об использовании, предоставляемые amazon, содержат подробную информацию о запросах, и вы можете использовать ее, чтобы посмотреть на эффекты симулированного использования вашего приложения в реальном мире.

Защита от мошенничества

Теперь, что касается мошенничествачастьМне немного сложно оценить уровень защиты от мошенничества, который вы ищете, но в любом случае у вас просто не будет системы голосования для защиты от мошенничества без учетных записей пользователей.Даже если у вас есть учетные записи, вы должны быть очень осторожны, чтобы избежать XSS и CSRF , чтобы злоумышленники не могли использовать других пользователей и их голоса.

Ограничение голосадля каждого IP есть ряд проблем.

  • Некоторые провайдеры активно используют IP-адреса для своих клиентов
  • Слишком легко подделать ваш IP, используя любое из большого количества анонимныхинструменты (прокси, vpn: s), которые процветали в эпоху торрента.Также можно использовать бесплатные «легальные» инструменты, такие как TOR .
  • Многие крупные организации / правительства / школы будут отправлять весь трафик своих пользователей через прокси-сервер или использовать NAT, что означает, что толькоодин пользователь от каждой организации сможет отдавать свои голоса.

Существует даже вероятность того, что пользователи имеют разные IP-адреса для каждого запроса (!)

Кстати, олипкие сессии, мы были удивлены, обнаружив, что есть те редкие пользователи, чьи IP-адреса будут радикально меняться от запроса к запросу.

http://blog.stackoverflow.com/2009/07/

Если вы действительно серьезныЧто касается создания надежной системы онлайн-голосования, вам придется просматривать учетные записи пользователей с какой-либо проверкой подлинности в реальном мире (т.е. отправлять коды подтверждения по почте на зарегистрированный адрес пользователя).

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

...