Предоставление функции только один раз каждому уникальному посетителю

StackOverflow https://stackoverflow.com/questions/611538

  •  03-07-2019
  •  | 
  •  

Вопрос

Я написал доску объявлений в качестве моего первого проекта ASP.NET. Кажется, до сих пор хорошо работает. Тем не менее, одна из функций, которые у меня есть, заключается в том, что каждое сообщение имеет рейтинг спама. Это просто количество раз, когда зрители пометили сообщение как спам, деленное на общее количество просмотров сообщения. Идея состоит в том, чтобы позволить пользователям игнорировать сообщения с высоким рейтингом спама, если они захотят это сделать.

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

Я не хочу требовать регистрации - я хочу, чтобы кто-либо мог просматривать или публиковать сообщения. Две идеи, которые я рассматривал, - это создание файла cookie, когда посетитель попадает на сайт, чтобы я мог их отслеживать, или создание новой таблицы данных, которая регистрирует IP-адреса пользователей, когда они просматривают сообщение или помечают его как спам. Кто-нибудь еще может придумать лучший способ? Имеются ли в .NET какие-либо встроенные функции, которые могут помочь мне определить, просматривает ли посетитель страницу впервые?

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top