За последние 24 часа нас посетили 18927 программистов и 1667 роботов. Сейчас ищут 1029 программистов ...

Не получается создать авторизацию

Тема в разделе "PHP для новичков", создана пользователем viktor72, 14 авг 2016.

  1. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Сказал Бен Ладен.....
     
    romach нравится это.
  2. SpikePHP

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

    С нами с:
    6 май 2015
    Сообщения:
    130
    Симпатии:
    23
    У меня вопросы, можно?)
    Что значит "сессия открывается как есть" ?

    Другими словами механизм сессий ты сделал вручную и стандартным не пользуешься?
     
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    @SpikePHP думаю он говорил о том, что в самой сессии эти данные хранятся, типа:
    PHP:
    1. $_SESSION['user_hash'] = md5($user_ip.$user_agent);
    Таким образом, если кто-то сопрет сессионную куку, то её в большинстве случаев будет не достаточно, т.к. у вора должен быть тот же юзер-агент, что не трудно и тот же ip, что уже слегка сложнее. Пых сессию подгрузит, но Сурикат её не примет, т.к. с его точки зрения она будет подделана. Использовать альтернативные реализации сессий при этом не нужно, все делается нативно.
     
    askanim, Fell-x27 и SpikePHP нравится это.
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    Боюсь вас расстроить, но если у вас уводят сессионную куку, это значит что кто-то выполняет JS в вашем браузере в вашем сеансе. А следовательно для сервера он это вы — и по IP и по User-Agent.
    --- Добавлено ---
    Я других способов увести куку что-то не могу придумать. Только XSS.
    --- Добавлено ---
    Для большей секурности используйте параметр httpOnly
    https://php.ru/manual/function.session-set-cookie-params.html
    --- Добавлено ---
    Можно конечно предположить вариант, что кто-то через XSS собирает куки для будущего использования напотом. Но сесионная кука по определению товар быстропортящийся. Нелишне подстраховаться и, не доверяя сессионной сборке мусора, считать сессию невалидной после N минут бездействия.
     
    romach нравится это.
  5. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.580
    Симпатии:
    1.760
    Но использовать-то эту уведённую куку потом пытаются в своём. Я думаю, Сурикат об этом
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    1) Я не говорю, что занимаюсь этим или сделаю.
    2) То, что беззаконие лучше не творить, расскажи орде мудаков, которые каждый день его нарушают. От того, что ты пальчиком грозишь, риски ниже не станут. Забота о пользователях - вот наш закон.
    --- Добавлено ---
    Ды это на флешку стянул копипастой в текстовом файлике, не суть же. Да, речь о том, что компьютер злопыхателя - иной. То, что Арту описал - тяжелая форма XSS-рака. Боюсь, кража кук в таком случае - меньшее, чем можно отделаться. Но то уже совсем другая история :)
    --- Добавлено ---
    Обычный сейшн старт и верификация сессии просто по факту того, что она открылась.
    Все реализовано через стандартный. Ромыч, собственно, все верно сказал. Просто верификация сессии устанавливается не просто по факту того, что она открылась, а еще и по совпадению отпечатков пользователя с теми, что в ней хранятся. Если не совпали - разрушаем сессию, разлогиниваем пользователя.
     
    SpikePHP нравится это.
  7. SpikePHP

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

    С нами с:
    6 май 2015
    Сообщения:
    130
    Симпатии:
    23
    Да. Он толково объяснил, я всё понял.

    Я просто почему-то думал, что ip и userAgent обязательно должны быть зашиты в названии текстового файла-сессии на сервере(название которого висит у пользователя в куке PHPSESSID). А он написал, что достаточно в одну из переменных, допустим $_SESSION['user_hash'] положить. В любом случае спасибо вам, что делитесь знаниями, которые можно использовать на практике!
     
    askanim нравится это.
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Присоединяюсь к @SpikePHP
    Спасибо за грамотную инфу.
    Познавательная тема...
     
  9. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    По совету друзей, стал вписывать защиту авторизации.
    С защитой от перебора не получается. Она не работает.
    Где я ошибся?

    PHP:
    1. $connect = mysql_connect('localhost', 'cdd', '5c8f') or die();
    2. $query = mysql_query("SELECT * FROM users");
    3. $user_data = mysql_fetch_array($query);
    4.  
    5.  
    6. if(!$_SESSION['bruteforce']){
    7.     $_SESSION['bruteforce'] = 0;
    8.     $_SESSION['bruteforce_t'] = time ();
    9.     $_SESSION['bruteforce_ip'] = $_SERVER['REMOTE_ADDR'];
    10. }
    11. $_SESSION['bruteforce']++;
    12.  
    13. if((time() - $_SESSION['bruteforce_t']) > 9 ) unset ($_SESSION['bruteforce']);
    14.  
    15. if(!empty($user_data['ip'])){
    16.     if((time() - $user_data['ip_del_time']) < 9){
    17.         exit ("ip попробовать через 10 минут");
    18.     }
    19.     else {
    20.         $select = mysql_query("UPDATE users SET ip='', ip_del_time='' WHERE login = 'dd'");
    21.         if(!$select) exit ("ошибка");
    22.         unset ($_SESSION['bruteforce']);
    23.         exit();
    24.     }
    25. }
    26.  
    27.  
    28. if ($_SESSION['bruteforce'] > 3){
    29.     $select = mysql_query("UPDATE users SET ip='$_SESSION[bruteforce_ip]', ip_del_time = '$_SESSION[bruteforce_t]' WHERE login = 'dd'");
    30.     exit("попробовать через 9 секунд");
    31. }
     
  10. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну, например, ты не учел такой момент, что бот может не поддерживать сессии ибо не поддерживает куки.
     
  11. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    вопрос - что делать? Убрать вообще этот кусок кода или исправлять его?
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Вести счетчик попыток не в сессии. В файле, в бд, в редисе, мемкеше, икс-кеше и тд.
     
    viktor72 нравится это.
  13. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Ой! Боюсь мне это пока не под силу...
     
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Учись, куда деваться.
     
  15. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.580
    Симпатии:
    1.760
    Это время в секундах, а не в минутах получается
     
    viktor72 нравится это.
  16. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    а что с этим куском кода делать? он не работает... удалить? пока я учусь.. не могуж я сайт отключить , пока не научусь защищаться от перебора...
    --- Добавлено ---

    да, я знаю... это я для теста поставил... но не работает...
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    попробуй APC кеш
     
  18. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @viktor72 от перебора защитится? А паузу сделать не вариант? Например после трёх не верных вводов сказать иди нафиг конкретному посетителю, например на 10 секунд.
     
  19. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    @askanim мысль рабочая, но мне очень интересно как бы ты сам её реализовал, м? хочется поржать.
     
  20. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @artoodetoo как вариант по ip.
    --- Добавлено ---
    @artoodetoo но вообще мне плевать на подбор. Подбором подобрать пароль например 53Kj#10l9T будет ну очень проблематично. А если вдруг у какого - то балбеса пароль qwerty123 " то сори чувак ты сам виноват". Уже не для кого не секрет что пароль должен состоять из букв и цифр, в нижнем и верхнем регистре, и множество сервисов именно его и использует, и запрещает ввод пароля без разного регистра, и меньше 6-8 символов. А уже вообще поднималась тема на форуме. И я писал что самое оно - это авторизация через телефон. То бишь через смс. Тебе выдаётся разовый пас на вход, который действует секунд 300. Ты вошёл он исчез. А в системе уже по сессии определяется. Я даже где - то встречал что пас на мыло присылается, разовый, но это не удобно.
     
    #120 askanim, 26 авг 2016
    Последнее редактирование: 26 авг 2016
  21. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    так если перебором занимается не сам хакер а его программа... перебирая варианты с большой скоростью... если от этого не защитится, то взломается любой пароль... в чём я не прав?
    --- Добавлено ---
    вообщето в коде, который я выставил выше задумана задержка на 9 секунд после 3 попыток... но оно не работает. вот я и спрашиваю, где ошибка?
     
  22. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Как реализовать задержку после трех попыток, а после пяти - увеличить. И чтобы через час после последнего запроса всё скидывалось.
     
  23. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    вообщето в коде, который я выставил выше задумана задержка на 9 секунд после 3


    сделал . получилось. нашел тоже что у меня на другом форуме http://www.cyberforum.ru/php-beginners/thread1789880.html#post9489440
    Но есть ньюансы
     
  24. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @viktor72 53Kj#10l9T - вот такой пас программа методом перебора, будет подбирать 100+ лет
     
    viktor72 нравится это.
  25. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    если можете, помогите с новой темой . не могу разобраться как сохранять картинки во время редактирования....https://php.ru/forum/threads/redaktirovanie-ne-soxranjajutsja-kartinki.59766/#post-483189