Как обнаружить клики ферм в представлениях для сайта - PullRequest
0 голосов
/ 15 апреля 2020

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

1-й вариант

В базе данных MySQL сообщения будут храниться в этой таблице.

Message(massageId, writerId, body, views)

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

UPDATE Message 
SET views = views + 1
WHERE messageId = ?

Конечно, messageId будет исходить из запроса GET при щелчке сообщения. Эта опция работает, но я подвержен риску, когда злоумышленники щелкают неограниченное количество раз по сообщению, увеличивая количество просмотров без контроля.

2-й вариант

На этот раз в базе данных я мог бы иметь две таблицы:

Message(massageId, writerId, body)

Views(viewId, messageId, visitorId)

Каждый раз, когда пользователь нажимает на сообщение, я проверяю, просматривал ли пользователь это сообщение:

SELECT viewId 
FROM Views 
WHERE visitorId = ? AND messageId = ?

Если этот запрос возвращает строку, то я не увеличит количество просмотров. В противном случае я бы увеличил количество просмотров, добавив их:

INSERT INTO Views
VALUES (?, ?, ?);

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

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

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