Как я могу проверить, может ли строка быть сгенерирована ботом? - PullRequest
0 голосов
/ 18 октября 2019

У меня проблема со спамом. Какой-то бот (я полагаю) обходит Google recaptcha и вставляет в формы на моем сайте строки, подобные следующим:

dtbNPRpfcz

VvAJEXqueSKscY

Кто-нибудь знает какие-либо JS илиКод C #, который я могу использовать, который дал бы высокую вероятность того, что указанная выше строка генерируется случайным образом?

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

В приведенных выше строках, например, содержится больше обычного числа символов ucase.

Обновление: В настоящее время рассматривается использование средства проверки надежности паролянекоторые из строк. Если строка выше слабой, то это скорее всего спам. Мой веб-хостинг сказал: «попробуйте другую recaptcha».

Обновление:

Хорошо. Я многому научился за это и получил некоторый полезный код, поэтому большое спасибо за ваш вклад и ответы. Однако, проигнорировав проблему на выходные, я снова посмотрел на нее. Я заметил, что спам-бот обходит ВСЕ проверки формы. Затем пенни упал. Бот собирался прямиком на маршрут и отправлял сообщения. Я не настроил CSRF (Подделка межсайтовых запросов). Это означало, что агент мог публиковать ссылки на URL-адрес вне домена сайта. Дох!

Я добавил это к формам:

 @Html.AntiForgeryToken()

Но на некоторых моих маршрутах отсутствовал код для проверки:

  try
            {
                this.ValidateCsrfToken();
            }
            catch (CsrfValidationException)
            {
                return Response.AsText("Csrf Token not 
valid.").WithStatusCode(403);
            }

Итак. Извиняюсь за трату вашего времени. Это исправило это немедленно.

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Случайный 16-40 сценарий с произвольным именем символа с расширением .js, и вы можете увидеть информацию в следующем формате, например userAgentKey, timezoneKey, browserKey. Вы можете проверить скрипт на вкладке Sources или на вкладке Network с XHR и информацией JS. Вы можете создать регулярное выражение для получения необходимой информации скрипта, которая будет соответствовать информации файла. [A-Za-z0-9] {14,40} .js Например: ytpbsalvddssjopc.js

interrogate: function(e) {
                var t = {};
                t = this.userAgentKey(t),
                t = this.languageKey(t),
                t = this.screenKey(t),
                t = this.timezoneKey(t),
                t = this.indexedDbKey(t),
                t = this.addBehaviorKey(t),
                t = this.openDatabaseKey(t),
                t = this.cpuClassKey(t),
                t = this.platformKey(t),
                t = this.doNotTrackKey(t),
                t = this.pluginsKey(t),
                t = this.canvasKey(t),
                t = this.webglKey(t),
                t = this.touchSupportKey(t),
                t = this.videoKey(t),
                t = this.audioKey(t),
                t = this.vendorKey(t),
                t = this.productKey(t),
                t = this.productSubKey(t),
                t = this.browserKey(t),
                t = this.windowKey(t),
                t = this.locationKey(t),
                t.fonts = "",
                t.devices = null,
                this.keys = t,
                this.parallel([this.fontsKey, this.devicesKey], e)
1 голос
/ 18 октября 2019

Случайное определение строки сложно и связано с машинным обучением. Я не рекомендую реализовывать это самостоятельно, может быть, библиотеки JS / C # для проверки орфографии действительно помогают.

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

  • Убедитесь, что вы правильно внедрили Google recaptcha. Используйте reCAPTCHA v3, если это возможно, и убедитесь, что вы проверили g-recaptcha-response на стороне сервера. Google recaptcha не на 100% надежен и может быть обойден некоторыми решениями Anti Captcha, но правильная реализация является основной.

  • Отфильтровать подозрительный IP-адрес. ЗаблокироватьIP-адрес, с которого отправляются случайно сгенерированные строки.

...