Система рейтинга, использующая http-пост - Избегать злоупотреблений - PullRequest
0 голосов
/ 19 июня 2011

У меня есть HTML для использования POST, который используется для оценки изображений.Эти изображения выбираются случайным образом с использованием SQL.

Как только я их поднял, я заметил, что некоторые пользователи (идентифицированные с помощью идентификатора пользователя) смогли за несколько коротких периодов времени проголосовать за изображение по своему выбору.время.Вероятно, они используют недостаток в способе обработки http POST.

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

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

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

Ответы [ 2 ]

6 голосов
/ 19 июня 2011

Составьте UNIQUE ограничение user_id и image_id.Затем запустите запрос в формате INSERT ... ON DUPLICATE KEY UPDATE.

1 голос
/ 19 июня 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...