Предотвращение спамеров с помощью хешированного идентификатора пользователя в веб-приложениях
Я создаю веб-приложение, которое позволяет пользователям отправлять сообщения другим пользователям. На странице отправки сообщения в настоящее время у меня есть идентификатор пользователя получателя в URL, поэтому приложение знает, куда отправить сообщение, например example.com/send-message/user-id/1. Идентификатор пользователя - это первичный ключ, используемый для идентификации получателя в базе данных.
Я обеспокоен тем, что спаммеры могут перейти на эту страницу и просто продолжать изменять идентификатор пользователя в URL-адресе и очень быстро спамить людей на сайте.
Решение, которое я нашел, состоит в том, чтобы создать длинный уникальный идентификатор (123154123412). Этот номер будет храниться в строке базы данных пользователей и будет использоваться вместо первичного ключа на странице отправки сообщения, чтобы спаммер не мог легко спамить множество людей, изменяя идентификатор.
Есть ли потенциальные проблемы с этим подходом, которые я, возможно, упустил из виду?
Если бы я использовал уникальный идентификатор по всему сайту, это значительно замедлило бы работу сайта. Другими словами, это быстрее для поиска в базе данных с использованием первичного ключа, чем сгенерированный уникальный идентификатор.
Спасибо
3 ответа
Другая вещь, которую вы можете сделать, это временно заблокировать сеансы или IP-адреса, когда они отправляют слишком много сообщений за короткое время (например, 1 минута между сообщениями и максимум 5 сообщений в 15 минут).
Такой подход абсолютно бесполезен.
Пока пользователи вашего сайта могут отправлять сообщения другим пользователям, спамеры будут использовать любой идентификатор, который вы придумаете.
Единственный способ - ограничить количество получателей и / или сообщений в час.
Я бы сказал, что, как правило, это плохая идея, позволяющая людям произвольно отправлять сообщения другим пользователям на веб-сайте (если, на мой взгляд, это не точка зрения сайта). Вы можете запретить автоматические спам-боты, но есть много людей, готовых заплатить реальным людям, чтобы они ходили и отправляли сообщения вручную. Прежде всего, вам, вероятно, следует разрешить только зарегистрированному участнику отправлять сообщение кому-то еще, кто каким-то образом "принял" этого участника - другу, разрешить сообщения от и т. Д.
Что касается использования длинного UID, при условии, что ваша база данных настроена правильно, единственным "ударом" по производительности может быть ее генерация, но это не замедлит работу вашего сайта, если вы будете использовать его вместо первичного ключа. Я БЫ.