Система защиты от повторного нажатия
Здравствуйте. Вынужден снова обратиться к мудрецам данного форума. Нужна ваша помощь.
Предисловье: У нас есть сайт, в нем присутствует личный кабинет пользователя. Чтобы попасть в него, нужно зарегистрироваться или авторизоваться. Это можно сделать путем авторизации по СМС или почтового адреса https://photo-screen.ru/i/5GeB2E0yp Суть проблемы: Но прошлой ночью недобросовестные люди специально слили весь бюджет на авторизацию по СМС. Они запрашивали код авторизации вводя рандомные телефонные номера. Система отправляла код авторизации на эти номера, при этом списывала деньги за каждое такое смс. Это длилось до того момента, пока счетчик средств не стал равен нулю. Возможное решение: Сначала я думал написать скрипт который будет записывать в куки количество кликов по кнопке АВТОРИЗАЦИЯ. Если кликов больше чем 5 за последние 24 часа, значит форму авторизации по СМС скрыть, а покупателя перенаправлять на страницу авторизации по почтовому ящику. План по идее отличный, и все в нем меня устраивает, но - реализовать это все на куках, это тоже самое что лечить выстрел в голову зеленкой. Плохой человек будет просто чистить куки и опять делать накрутку смс. Я уже думал так, а не создать ли файлик в который будут записываться все айпишники которые кликнули по кнопке АВТОРИЗАЦИЯ за последние 24 часа. Настроить так, что клик по этой же кнопке будет сначала проверять есть ли в файлике текущий IP посетителя который делает клик по кнопке АВТОРИЗАЦИЯ. Если там есть 5 или больше записей этого IP за последние 24 часа, тогда просто перенаправлять его на страницу авторизации по емейлу. Можно также вывести сообщение что то типа - Вы исчерпали все попытки авторизоваться по СМС за сегодня. Авторизация по СМС будет доступна завтра. Сейчас вы будете перемещены на страницу авторизации по емейлу. Но это уже нюансы. Также, подошло бы решение на php. Главное что основное событие это клик по кнопке <button id="login">АВТОРИЗАЦИЯ</button> И если этих кликов больше 5 за последние 24 часа - выполнить действие переадресации на другую страницу вместо появления окна авторизации по смс. Но я не знаю реально ли это сделать на js. P.s. Буду рад любым вашим идеям или решениям данной проблемы.:yes: |
Это не работа для браузера. Сервер должен заниматься этим.
|
++
Что бы вы не сделали на js, злодей может вообще выкинуть браузер и слать нужные запросы curl'ом.) Так что цепляться вам надо не к клику, а к тому что у вас на сервере происходит после клика. И привязываться не только к ip но и к имени пользователя, используемого для атаки а также количеству перепробованных разных телефонов, как для ip так и для имени. (врядли обычный человек будет пытаться логиниться с более чем двух телефонов за короткий промежуток времени). |
Прежде всего защитите форму отправки csrf token
Может вставить google капчу Добавить в форму скрытое поле пример city Роботы заполняют все, а вы если не пустое значит робот :) |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
StartGames,
защита форм с помощью csrf token гуглите сами, а для начала разбиритесь в двух словах на беке в сессию пользователя добавляется токен который выводится в скрытом поле формы токен отправляется на бек и сверяется с тем что в сессии а раз есть сессия то можете контралировать сколько вызовов за период ищите интеграцию капчи с проверкой на php по city , что не понятно? добавили в форму <input type="hidden" name="city" value=""> на беке проверили если city не пустое значит бот |
Цитата:
|
Вот только не понятно, как можно авторизовываться, вводя фиктивный номер? Если номер фиктивный и не связан ни с каким пользователем, то на него не должна отправляться СМС.
Такое возможно только при регистрации. Каптча может защитить от бота, но если там сидят реальные люди и вводят номера, каптча только замедлит процесс. Куки можно чистить. Реальнее все таки на сервере вести журнал обращений и действий по IP. IP часто менять не так просто. |
Часовой пояс GMT +3, время: 16:14. |