За последние 24 часа нас посетили 18773 программиста и 1637 роботов. Сейчас ищут 954 программиста ...

Органичение попыток авторизации

Тема в разделе "PHP для новичков", создана пользователем opiums, 1 май 2017.

  1. opiums

    opiums Активный пользователь

    С нами с:
    6 фев 2015
    Сообщения:
    24
    Симпатии:
    0
    Здравствуйте, есть простенькая форма авторизации:
    PHP:
    1. <?php
    2.  
    3. $valid_passwords = array ("admin" => "admin");
    4. $valid_users = array_keys($valid_passwords);
    5.  
    6. $user = $_SERVER['PHP_AUTH_USER'];
    7. $pass = $_SERVER['PHP_AUTH_PW'];
    8.  
    9. $validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
    10.  
    11. if (!$validated) {
    12.   header('WWW-Authenticate: Basic realm="My Realm"');
    13.   header('HTTP/1.0 401 Unauthorized');
    14.   die ("Not authorized");
    15. }
    16.  
    17. // Тут мы пишем результат
    18. echo "Здравствуйте $user.</br>";
    19. echo "Поздравляем, Вы успешно авторизовались.</br><hr>";
    20.  
    21. ?>
    Необходимо ограничить кол-во попыток ввода данных до 3-х например, как это можно сделать?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    В базу писать попытки и проверять если они ещё остались
     
  3. opiums

    opiums Активный пользователь

    С нами с:
    6 фев 2015
    Сообщения:
    24
    Симпатии:
    0
    других вариантов больше нет?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    в базе реализованы транзакции, а без них что-то надёжное сложно сделать для твоей задачи
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Я что-то сомневаюсь, что с базовой авторизацией это сработает. Насколько помню, при этом при каждом вызове она происходит, просто первый раз браузер спрашивает пароль, а в дальнейшем - всегда его передаёт, так что каждый раз происходит авторизация по новой.
     
    artoodetoo нравится это.
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    А если после 3 не правильных попыток, блокировать вход ну на пол часа, ну или использовать каптчу. Или не поможет?
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ты прочитал то, что я написал? Ты знаешь, что такое "базовая HTTP авторизация"? Какая капча, если у него базовая авторизация?
    --- Добавлено ---
    P.S. хотя я тут как и большинство обозвал аутентификацию авторизацией. @Fell-x27 может справедливо негодовать. Слово уж очень сложное "аутентификация". Так что, @_ne_scaju_, гугли "базовая http аутентификация". И это, если в ответе видишь незнакомые слова - их бы неплохо погуглить сначала.
     
  8. opiums

    opiums Активный пользователь

    С нами с:
    6 фев 2015
    Сообщения:
    24
    Симпатии:
    0
    Может просто ограничить кол-во запросов?
     
  9. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @opiums количество неудачных попыток должно гдето хранится в бд самый оптимальный вариант, если он не устраивает то есть масса костылей: файлы, оперативка, $гет, куки но повторюсь это костыли некоторые причём легко обходимы
     
  10. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Коллеги, не любите внимательно вопрос читать.

    Не умеет этого делать Auth_base. Как сделать чтобы не городить свой огород?
    Например, использовав fail2ban (http://www.fail2ban.org/wiki/index.php/Main_Page ). Пишите конфиг, разрешив три попытки ввода, и лочите ip на нужное вам время или навсегда. Всё есть в доке.
     
  11. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Zuldek а проксю отменили чтоли?
     
  12. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Причем тут "прокся"? Речь в теме не шла об обходе авторизации через прокси.
    Задержка на обработку запроса авторизации/аутентификации в 5-10 секунд, модули на шлюз с прикрытием бесплатных пулов нежелательных адресов и брутафорсь себе на здоровье.
     
    #12 Zuldek, 2 май 2017
    Последнее редактирование: 2 май 2017
  13. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Zuldek ну ок. вот допустим ситуация,- я держу кул мега соцсеть, у моего провайдера внешний ип серый. и ктото запостил типа пароль от админку "123456" школота ломанулась проверять, а поскольку ип серый то на моём ипшнике сидит парочка школоло. в результате я не смогу зайти в админку чтобы удалить это сообщение.
    речь в теме много про что не шла, но эти вопросы взаимосвязаны, по хорошему и админка должна находится там куда посторонний не влезет
    а твой вариант блокирования количества попыток очень подойдёт для соцсети)))
     
  14. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Мне сложно комментировать твои аналогии из разряда "если бы дедушка был бабушкой". Если тебе интересно как это происходит в "кул мега соцсетях" то (не комментирую "Серые апи провайдера") там твой запрос попадает на одну из аппаратных фильтров от циски где попытки всяких "атак с проксей" обычно заканчиваются. Дале запрос падает на один из нескольких балансиров с каким-нибудь haproxy и только потом на один из скажем 20-ти апликейш-серверов.

    Обновление пулов недоверенных адресов в которые смотрят некоторые фильтры тоже происходит не так как тебе представляется (если об этом шла речь)
     
    #14 Zuldek, 3 май 2017
    Последнее редактирование: 3 май 2017