За последние 24 часа нас посетили 17395 программистов и 1740 роботов. Сейчас ищут 1077 программистов ...

Как правильно организовать процесс авторизации в системе

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

  1. timur2008

    timur2008 Новичок

    С нами с:
    14 окт 2015
    Сообщения:
    136
    Симпатии:
    2
    Добрый вечер. У меня назрел вопрос сделать нормальную авторизацию в системе. И тут появились вопросы. У меня все пользователи хранятся в таблице (их логины и пароли) . Юзер вводит логин пароль и селектом проверяется есть ли такой юзер или нет. но тут как раз и трабла. Мне чтобы селектом проверить есть ли такой юзер в базе нужно изначально иметь доступ к базе. Чтобы сделать к ней запрос и это означает что у меня в коде гдето должны быть прописаны строки логина и пароля админа? Как это правильно сделать т.к. я боюсь что злоумышленник же может получить доступ к исходникам пхп кода ?
     
  2. anderstender

    anderstender Новичок

    С нами с:
    15 ноя 2016
    Сообщения:
    55
    Симпатии:
    25
    если злоумышленник получил доступ к исходникам, то тебе ничто не поможет, храни как везде, в файлах конфигов, которые закрываешь от прямого вызова из браузера и не парься
    --- Добавлено ---
    вот пароли в таблице не храни в принципе, хэшируй и храни хэши, а при вводе пароля юзером хэшируй то что он ввел и делай селект уже по хэшу
     
    Fell-x27 и timur2008 нравится это.
  3. timur2008

    timur2008 Новичок

    С нами с:
    14 окт 2015
    Сообщения:
    136
    Симпатии:
    2
    Хмм понял спасибо :)
     
  4. eldor

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

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Я бы посоветовал пароль хешировать с помощью password_hash, а проверять хеши - с помощью password_verify. Подробнее погугли как правильно с ними работать.
     
    Fell-x27 и denis01 нравится это.
  5. Fell-x27

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

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

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

    Если тебе нужен доступ к БД удаленно, то просто создай нового пользователя для себя. И ему разреши доступ с любых IP. Но пароль храни как зеницу ока.
     
    machetero и marsik нравится это.
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Из серверных скриптов можно только небольшую точку входа оставить в публичном каталоге, а все прочее загнать под капот.
    --- Добавлено ---
    И вообще привыкайте, что корень сайта – это только часть сайта, причем в плане хранения серверного кода далеко не основная. Там по сути находится только штатная программная заглушка. Пусть даже это микродвижок – его все равно можно взять из дистра и подкрутить за пять сек.
     
    denis01 нравится это.
  7. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Пусть даже это макроджумла, никто не мешает инклудить ее "сверху".
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    охренеть! И такое бывает...
     
  9. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Настрой с нуля связку серверную, поймешь, как она работает и как компоненты взаимодействуют, поймешь, что одна строчка в конфиге того же nginxa, слетевшая по причине какой-нибудь крайне неосторожной обновы, приведет к тому, что все запросы на .php-скрипты будут обрабатываться как запросы к статике, вместо того, чтобы проксироваться до указанной php-машины. И nginx не долго думая будет отдавать твои исходники как текст, если, конечно, сможет промапить их на файловую систему, от чего застраховано все, что лежит выше каталога хоста.
     
    denis01 нравится это.
  10. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    логина и пароля пользователя MySQL, Карл. а не пользователя твоего сайта. это две большие разницы

    само по себе знание исходников это ещё не катастрофа. исходники большинства движков (того же WordPress) доступны всем.
    пароль к базе это часть не исходников, а конфигурации. вот файлик конфигурации ты не должен просрать!
     
    timur2008 и denis01 нравится это.
  11. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Еще есть вариант получения доступа к исходникам с возможностью записи. И тогда, если не заметишь напиханные шеллы и снифферы, тебя ничего не спасет.
     
    timur2008 нравится это.
  12. timur2008

    timur2008 Новичок

    С нами с:
    14 окт 2015
    Сообщения:
    136
    Симпатии:
    2
    Всем спасибо за ответы, для меня это очень ценная информация :)