Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Защита авторизации.
Форумы портала PHP.SU » » Вопросы новичков » Защита авторизации.

Страниц (1): [1]
 

1. leshiy - 04 Августа, 2017 - 14:52:10 - перейти к сообщению
После 2-ой попытки неправильной авторизации форма блокируется и выводится время через которое возобновиться доступ к авторизации, но у меня отсчет этого времени начинается считаться с 1-ой попытки и когда форма блокируется то выводится не 30сек. а меньше.Как бы это поправить?
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(!$_SESSION["vzlom"]){$_SESSION["vzlom"] = 1;
  4. $_SESSION["v_time"] = time ();}
  5. if((time () - $_SESSION["v_time"]) > 30) unset($_SESSION["vzlom"]);
  6. $vrem = (30 - (time() - $_SESSION["v_time"]));
  7. $m=floor(($vrem%3600)/60);
  8. $s=($vrem%3600)%60;
  9. $ot_time = ("".$m." мин. ".$s." сек.");
  10. if($_SESSION["vzlom"] >= 2)
  11.  {echo $ot_time;}
  12. ?>
  13.  
2. zapatronen - 04 Августа, 2017 - 16:39:38 - перейти к сообщению
1 минута = 60 сек, ищи в коде 60 сек пробуй менять на больше
(Добавление)
или меньше
3. leshiy - 04 Августа, 2017 - 17:24:28 - перейти к сообщению
Да тут дело не в кол-ве секунд, а в начале отсчета.
4. Sail - 04 Августа, 2017 - 22:38:42 - перейти к сообщению
leshiy пишет:
Да тут дело не в кол-ве секунд, а в начале отсчета.

Ну так и задавайте время начала не в первой ветке, где выставляете 1.
Разделите верку, где проверяете на >= 2. Ту часть, где будете сравнивать с двумя - сделайте альтернативной веткой сравнения с 0/false/null (эту проверку, кстати, лучше доверить функции isset(), тогда инициализировать значение можно будет нулем, или empty(), если уж начинать с 1). Значение с индексом vtime инициализируем именно в этой ветке.
Далее - проверка существования значения с индексом v_time. И только если она успешна - проверяем длительность и, если уже можно (тут проверка длительности текущего запрета), то - сбросить значения v_time и vzlom.
В альтернативной ветке (не той, где проверили длительность, а той, где проверяли существование v_time) - вычисляете оставшееся время и отображаете его.
Как-то так. Закатив глазки
Нарисуйте блок-схему - станет проще Улыбка
Может, найдете как оптимизировать процесс...
5. Строитель - 05 Августа, 2017 - 01:17:55 - перейти к сообщению
leshiy, для примера я дописал пару переменных с паролями из html-формы и из базы, и прокомментировал основные моменты
Спойлер (Отобразить)
6. OrmaJever - 05 Августа, 2017 - 11:45:20 - перейти к сообщению
leshiy я вас огорчу, очистил сессии и можно снова авторизироваться
7. LIME - 05 Августа, 2017 - 12:32:57 - перейти к сообщению
zapatronen пишет:
1 минута = 60 сек, ищи в коде 60 сек пробуй менять на больше
а еще лучше используй константы/конфиги чтоб не искать при смене значений
OrmaJever пишет:
leshiy я вас огорчу, очистил сессии и можно снова авторизироваться
ты хотел сказать куки... всетаки есть разница)
надо завести кэш с ip нарушителя чтоб не опираться на локальные хранилища и кукисы
8. MouseZver - 05 Августа, 2017 - 13:54:05 - перейти к сообщению
от перебора пароля ничего не спасет ( с )

https://php[dot]ru/forum/threads/pis[dot][dot][dot]651/#post-527666
9. LIME - 05 Августа, 2017 - 14:01:10 - перейти к сообщению
ага
особенно если у тебя квантовый компьютер и ты в локалке с целью
или у тебя есть все время мира
чушь
(Добавление)
Цитата:
сессия уничтожается при закрытии браузера
неправда
даже сессионная кука необязательно
дальше не стал читать

 

Powered by ExBB FM 1.0 RC1