Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2021, 21:25
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 143

Система защиты от повторного нажатия
Здравствуйте. Вынужден снова обратиться к мудрецам данного форума. Нужна ваша помощь.

Предисловье:
У нас есть сайт, в нем присутствует личный кабинет пользователя. Чтобы попасть в него, нужно зарегистрироваться или авторизоваться. Это можно сделать путем авторизации по СМС или почтового адреса https://photo-screen.ru/i/5GeB2E0yp

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

Возможное решение:
Сначала я думал написать скрипт который будет записывать в куки количество кликов по кнопке АВТОРИЗАЦИЯ. Если кликов больше чем 5 за последние 24 часа, значит форму авторизации по СМС скрыть, а покупателя перенаправлять на страницу авторизации по почтовому ящику.

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

Я уже думал так, а не создать ли файлик в который будут записываться все айпишники которые кликнули по кнопке АВТОРИЗАЦИЯ за последние 24 часа. Настроить так, что клик по этой же кнопке будет сначала проверять есть ли в файлике текущий IP посетителя который делает клик по кнопке АВТОРИЗАЦИЯ. Если там есть 5 или больше записей этого IP за последние 24 часа, тогда просто перенаправлять его на страницу авторизации по емейлу. Можно также вывести сообщение что то типа - Вы исчерпали все попытки авторизоваться по СМС за сегодня. Авторизация по СМС будет доступна завтра. Сейчас вы будете перемещены на страницу авторизации по емейлу. Но это уже нюансы.

Также, подошло бы решение на php. Главное что основное событие это клик по кнопке <button id="login">АВТОРИЗАЦИЯ</button> И если этих кликов больше 5 за последние 24 часа - выполнить действие переадресации на другую страницу вместо появления окна авторизации по смс. Но я не знаю реально ли это сделать на js.

P.s.
Буду рад любым вашим идеям или решениям данной проблемы.

Последний раз редактировалось StartGames, 25.11.2021 в 21:29.
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2021, 21:40
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Это не работа для браузера. Сервер должен заниматься этим.
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2021, 21:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

++

Что бы вы не сделали на js, злодей может вообще выкинуть браузер и слать нужные запросы curl'ом.)

Так что цепляться вам надо не к клику, а к тому что у вас на сервере происходит после клика. И привязываться не только к ip но и к имени пользователя, используемого для атаки а также количеству перепробованных разных телефонов, как для ip так и для имени. (врядли обычный человек будет пытаться логиниться с более чем двух телефонов за короткий промежуток времени).
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2021, 22:45
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Прежде всего защитите форму отправки csrf token
Может вставить google капчу
Добавить в форму скрытое поле пример city
Роботы заполняют все, а вы если не пустое значит робот
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2021, 09:45
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 143

Цитата:
Прежде всего защитите форму отправки csrf token
А можете показать пример на кнопке <button id="login">АВТОРИЗАЦИЯ</button>

Цитата:
Может вставить google капчу
Она может блокировать доступ если пользователь слишком часто жмет по определенной кнопке?)

Цитата:
Добавить в форму скрытое поле пример city
С этим бы тоже не помешал пример)
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2021, 09:46
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 143

Цитата:
Так что цепляться вам надо не к клику, а к тому что у вас на сервере происходит после клика.
значит нужно писать админам хостинга?!)
Ответить с цитированием
  #7 (permalink)  
Старый 26.11.2021, 09:47
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 143

Цитата:
Это не работа для браузера. Сервер должен заниматься этим.
Я так понимаю нужно написать админам хостинга и чтобы они поставили защиту по этому действию... если верно вас понял...
Ответить с цитированием
  #8 (permalink)  
Старый 26.11.2021, 20:06
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

StartGames,
защита форм с помощью csrf token гуглите сами, а для начала разбиритесь
в двух словах на беке в сессию пользователя добавляется токен
который выводится в скрытом поле формы
токен отправляется на бек и сверяется с тем что в сессии
а раз есть сессия то можете контралировать сколько вызовов за период

ищите интеграцию капчи с проверкой на php
по city , что не понятно?
добавили в форму
<input type="hidden" name="city" value="">
на беке проверили если city не пустое значит бот

Последний раз редактировалось Vlasenko Fedor, 26.11.2021 в 20:09.
Ответить с цитированием
  #9 (permalink)  
Старый 26.11.2021, 20:21
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 143

Цитата:
защита форм с помощью csrf token
понимаю что к сожалению, это абсолютно не решает проблемы. Если человек вручную сливает, тогда лучше будет поставить гугл каптчу. Только вот непонятно каким образом узнать и получить ответ гугла о том, ввел ли покупатель верный ответ или нет. И как запустить саму проверку от клика по кнопке, и когда и как проверять ответ гугла...
Ответить с цитированием
  #10 (permalink)  
Старый 26.11.2021, 22:01
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Вот только не понятно, как можно авторизовываться, вводя фиктивный номер? Если номер фиктивный и не связан ни с каким пользователем, то на него не должна отправляться СМС.
Такое возможно только при регистрации.

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

Последний раз редактировалось voraa, 26.11.2021 в 22:07.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операционная Система на JS Icat Общие вопросы Javascript 3 17.04.2018 22:54
Система оценки качества трафика в реальном времени - White Diagnostic rumarkin Элементы интерфейса 0 18.06.2016 15:33
Система оценки качества трафика в реальном времени - White Diagnostic rumarkin Общие вопросы Javascript 0 18.06.2016 00:07
Система оценки качества трафика в реальном времени - White Diagnostic rumarkin Ваши сайты и скрипты 0 18.06.2016 00:04
Как можно избавится от повторного нажатия? ssh AJAX и COMET 4 23.02.2010 18:52