За последние 24 часа нас посетили 14815 программистов и 1722 робота. Сейчас ищут 620 программистов ...

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

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

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @machetero ну вот когда взломают сайт, тогда и поймёшь: что, куда, зачем и почему.
    --- Добавлено ---
    Если ссылку легко будет подобрать, на которой ты вводишь новый пароль, то уведут аккаунт легко.
    Например захожу на сайт, ага вижу, войти регистрация забыл пароль. Регаюсь,
    Потом нажимаю пароль, приходит ссылка ко мне на почту, а там уже видно какого типа ссылка, если она коротенькая и фонарная, беру основу, ссылки и начинаю подбор на программе какой нибудь, написаной мной же в поисках например на этой ссылке слова введите новый пароль. Нахожу ага есть, знач нашёл ссылку захожу по ссылке ввожу новый пароль и вуаля аккаунт мой.
    А ещё если чувак в течении 2 часов таки не воспользовался своей ссылкой, то к примеру ссылка становится не действительной. А с зашифрованной ссылкой, подобрать её за пару часиков будет не реально.
     
    #76 askanim, 18 авг 2016
    Последнее редактирование: 18 авг 2016
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.839
    Симпатии:
    651
    Можно совсем ничего не использовать.
     
  3. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @askanim а если строка в ссылке связана с некоторой одноразовой сущностью, которая в свою очередь имеет ограниченный срок годности и связана исключительно с твоим аккаунтом? Зачем тебе ломать свой же аккаунт?
     
  4. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.582
    Симпатии:
    1.760
    Ну может он и имел это в виду. Я делаю так:
    Код (Text):
    1. $str = md5(uniqid($user->email));
    2.  
    3. $link = "http://mysite.ru/pass-reset?str=$str";
    Ну и в базу к юзеру строку, естественно. e-mail приделываю на случай, если вдруг (хотя это маловероятно) 2 пользователя одновременно будут запрашивать и uniqid вернёт одинаковое число
     
  5. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а чем скажем openssl_random_pseudo_bytes() не подходит для генерации уникальных строк? И если у тебя два пользователя запрашивают резет на один аккаунт - второму можно показать, что лимит запросов превышен. А то так твой сервис атакуют запросами резетов и к твоему почтовому серверу потом будет менее доверительное отношение.
     
  6. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Это как?
     
  7. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @romach хранить пароль в плейнтексте.
     
    romach нравится это.
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.582
    Симпатии:
    1.760
    Я имел в виду два разных пользователя вдруг запросили в один момент, что метка времени не успела смениться.
     
  9. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @mkramer переходи на openssl :D
     
  10. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.582
    Симпатии:
    1.760
    Уговорил :D
     
  11. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Сложное решение простых вещей. Когда пользователь залогинился, просто напиши $_SESSION['login'] = true;
    ВСЕ. Потом проверяй if ($_SESSION['login']) .
     
    romach и mahmuzar нравится это.
  12. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Всё прочитал, пробовал читать в мануале про - ob_start()...
    ничего не понимаю... в целом мануал мне пока что не понятен
    Если , держу логин и пароль в файле, то всё нормально работает, если пытаюсь подключится из базы данных, ничего не работает.
    Но ответ есть и я его найду со временем.
    Всем спасибо.
     
  13. SpikePHP

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

    С нами с:
    6 май 2015
    Сообщения:
    130
    Симпатии:
    23
    @viktor72 http://www.specialist.ru/dictionary/definition/php или, кхм-кхм, http://pirat.ca/viewtopic.php?t=148791
    --- Добавлено ---
    "ob_start()... ничего не понимаю... " (с) @viktor72

    Смотри. Если вначале своего скрипта ты пишешь ob_start(), то даже если у тебя в тексте будут выводы вроде echo или print_r, то они не будут выводится, пока интерпретатор не дойдет до строчки, где будет ob_end_flush() или же последней строчки скрипта. НО! Если у тебя идет где-то вывод заголовков, то они выводятся как и полагается, без помещения в буфер.

    PHP:
    1. <?php
    2. echo "Сегодня хорошая погода."; /* уходит в буфер и не выводится */
    3. echo "Завтра будет дождь."; /* уходит в буфер и не выводится */
    4. header('Content-Type: text/html; charset=utf-8'); /*заголовок уходит браузеру*/
    5. echo "Температура воздуха 20 градусов."; /*уходит в буфер и не выводится*/
    6. /*как только скрипт заканчивается интерпретатор отправит браузеру это : "Сегодня хорошая погода.Завтра будет дождь.Температура воздуха 20 градусов."*/
    7. ?>
    В результате работы скрипта сначала отрабатывает заголовок, а потом вывод из всех echo
     
    #88 SpikePHP, 19 авг 2016
    Последнее редактирование: 19 авг 2016
    viktor72, askanim и Fell-x27 нравится это.
  14. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Fell-x27 вопрос по безопасности! А можно стащить сессию?
     
  15. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
  16. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Ура ! получилось! Дедовски методом. Методом тыка!
    Там не в хеадаре была проблема а в самой сессии ... там была какая то мистика...
    а ещё вот это
    PHP:
    1. $admin == $_POST['user'];
    поменял на это:
    PHP:
    1. $admin = $_POST['user'];
    и захожу в админку и хеадер перекидывает куда надо

    вот мой не сложный код, который доводил меня до уныния
    PHP:
    1. if($_POST['submit2']){
    2.  $admin = $_POST['user'];
    3.  $pass = md5($_POST['pass']);
    4.  $query = mysql_query("SELECT * FROM users");
    5. $user_data = mysql_fetch_array($query);
    6. if(($admin === $user_data['login']) AND ($pass === $user_data['pass'])){
    7.  $_SESSION['admin'] = $admin;
    8.  header("Location: admin/admin.php");
    9.  exit;
    10. }else echo'<h3>  Логин или пароль не верны  </h3>';
    а по поводу сессии там или кирилический символ или какой то лишний пробел или не знаю что было... я переписал и заработало. вообщем какая то мистика... или я может чего не знаю.
    Всем спасибо
    --- Добавлено ---
    Спасибо. Думаю мне это понятно, надо будет запомнить.
     
  17. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Скажем так. Стащить - нет. Просрать - да. Зависит от реализации защиты. Если сессия открывается как есть, то достаточно упереть сессионную куку и вуаля. По умолчанию PHP нужна только она. Это называется именно что, пардон, просрать сессию.

    А вот у меня, например, ты сессию не утащишь. Даже если сопрешь сессионную куку. Потому что в самой сессии хранится хэш от IP и UserAgent пользователя. Когда злоумышленник(будем считать, что он по дефолту висит на другом роутере, нате, и тд, а не сидит рядом с жертвой), сделает запрос на сайт, система проверит куку, удостоверится, что она актуальная, откроет сессию по ней, вытащит оттуда вышеописанный хэш, который в народе зовется фингерпринт(от англ fingerprint - отпечаток пальца), сгенерирует новый исходя из данных соединения, поймет, что они нифига не идентичны, и тут же схлопнет сессию, попутно разлогинив пользователя со всех компов. Такая система не способна просрать сессию, даже если злодей ее "утащит".
     
    Deonis, mahmuzar, askanim и ещё 1-му нравится это.
  18. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Спасибо.

    Я согласен. про защиту я не позаботился. У меня в базе просто пока что 20 записей. Мой сайт пока что просто никому не инетресен.
    Потом, что худшего может произойти? После внесения чего либо в базу я делаю в phpmyadmin бэкап базы данных вручную, плюс все файлы хранятся на локальном компьютере. Если хулиган что то испоганит, то я залью информацию на хостинг за пол часа. Или я в чём то ошибаюсь?
     
  19. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Для малых сайтов без посетителей, вообще опасности ничего не предоставляет. А теперь представь стотысячный форум. И там кто-то спирает чужую учетку. Например, модерскую. Бекап восстановит данные. Бекап не восстановит репутацию и не избавит пользователей от осадочка.

    Плюс хитрый злоумышленник будет действовать незаметно. Например, внедрит через админку, если к ней будет доступ, в шаблон, вредоносный JS или еще что.

    А еще можно втихаря зайти в настройки аккаунта, поменять там почту на свою, разлогиниться, нажать "выслать пароль", и поменять его. А если сайт рассылает пароли в чистом виде, а такое до сих пор случается, то еще и заполучить пароль пользователя, который подойдет, вероятно, к его другим учеткам. Причем никто не мешает залогиниться под своим паролем новым, вернуть старую почту пользователя и разлогиниться снова/вернуть все как было.

    Либо юзер ничего не заметит, либо просто решит, что чот-то не так и восстановит себе парольку заново. А зловред тем временем уже будет потрошить его банковскую карту через личный кабинет.
     
    viktor72 нравится это.
  20. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6

    Ужас! Больше никогда не зайду в интернет!

    А как через мой сайт он может влезть на мою пластиковую карту?

    У меня план такой - по мере наполнения сайтаи увеличения посетителей буду апгрейживать сайт защитами. вот такой план.
     
  21. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    ну, говно план. Давайте думать о защите, когда всё уже будет просрано.
     
  22. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Если бы я угнал твой пароль, то, первым делом, я бы проверил почту, которая была вбита на сайте, через этот пароль. С вероятностью 99% пароль бы подошел. Потом я бы прошерстил почту на предмет сообщений от разных сайтов. Ну там, всякие интернет-магазины, Steam, Origin, BattleNet, и прочее. Тот же Ибэй обожает рассылать спам. Далее - имея почту я могу вскрыть практически любой твой аккаунт через восстановление пароля. Разве что кроме того же Стима и прочих сервисов с двухфакторной авторизацией. Так что разные пароли тебе не помогут.

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

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

    Когда ты проснешься, не будет никаких следов моей деятельности. Разве что если у тебя подключен мобильный банк, могут приходить смски посреди ночи. Но кому на них не плевать в такое время? А на утро они уже не будут иметь смысла.

    А теперь представь, что таким образом ты подставляешь КАЖДОГО посетителя своего сайта, который зарегался.
    А потом люди удивляются, каким образом у них угоняют скайпы, фигайпы и прочие вконтакты.
     
    mr.akv, askanim, artoodetoo и ещё 1-му нравится это.
  23. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6

    Сдаюсь! Буду по не многу вносить в код защиты.
    Я давно уже присмотрел один урок по защите авторизации.
    Надеюсь для начала этого достаточно.
     
  24. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Fell-x27 Да действительно, ну это не сложно реализовать, спасибо за инфу сделаю у себя так же)
     
    viktor72 нравится это.
  25. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    @Fell-x27 Вообще всякое беззаконие лучше не творить ) Рано или поздно ловят всех.
     
    viktor72 нравится это.