Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
Привет всем! Возник вопрос , связанный с правильной организацией логина и пароля на момент открытой текущей сессии, либо активного соединения. Ранее много лет занимался базостроением на десктопных приложениях, VBA. Сохранить значения логина и пароля было очень просто- передать логин и пароль в глобальную переменную и доставать их оттуда на весь период открытого проекта /открытой программы. СУБД были написаны на Access и скомпилированы, поэтому дернуть со стороны значения логина и пароля практически невозможно, так как прямого доступа к модулям и все что в них зашифровано по очевидной причине не было. Сейчас активно изучаю то же самое базостроение, но уже с использованием js,php,mysql. Вопрос такой, есть к примеру входная форма ,страница, на которой я ввожу логин и пароль. Ввожу один раз, но пользуюсь во время всего сеанса работы моей веб базы. В куках браузера с последующим обращением туда я не хочу хранить данные логина и пароля. даже зашифрованный пароль я смог расшифровать на специализированном сайте. Как и где еще можно хранить /задавать логин и пароль к своей базе данных более безопасно, чтобы в куках ничего не было, но чтобы на весь период работы человека с проектом данные соединения/логина/пароля сохранялись? Вопрос интересует в разрезе возможностей PHP в связке с сервером MySQL. Про глобальные переменные и сессии в PHP прочитал, пока бегло. Хочу спросить, как правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 00:09 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
В сессии, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 00:15 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, Для надёжности пароль не хранят, хранят его хеш, алгоритм создания хеша известен только серверу, обратное преобразование хеша в пароль невозможно, если хеш правильный. Пароль вводится в прямом виде только при авторизации, сервер вычисляет его хеш и сравнивает с хранящимися в БД. Далее создаётся сессионный хеш (самый надёжный - с привязкой к IP, чтобы кража кук была бесполезной). В куки записывается именно сессионный хеш, его можно проверять при каждом запросе - вычислять заново и сравнивать с созданным при авторизации. При смене пароля создаётся новый хеш, но сам пароль серверу неизвестен (и не нужен). Как-то так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 00:52 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
бухалтер фантоцци, А как потом этим хешем авторизоваться на СУБД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 01:20 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
vkleбухалтер фантоцци, А как потом этим хешем авторизоваться на СУБД? я в СУБД храню хеши паролей плюс сессионные хеши (2 поля), когда происходит авторизация, в поле для сессионного хеша пишется созданный сессионный хеш, потом при каждом запросе по индексу он ищется, берётся ID, хеш пароля, текущий IP и прочие данные запроса, опять вычисляется сессионный хеш и сравнивается с записанным, если совпадает, то всё ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 01:27 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
P.S. у этого способа есть дополнительная особенность (это может быть как плюс, так и минус, смотря с какой стороны посмотреть), при новой авторизации старый хеш сессии слетает, поэтому работа возможна только с того устройства, которое было авторизовано последним, ну и при смене динамического IP тоже хеш слетает (хотя у меня бывает динамичный IP не меняется 1-2 месяца, пока принудительно роутер не перезагрузишь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 01:36 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
2 способ - если пользователей немного (скажем не более сотни). Здесь можно вообще без БД обойтись, но пароли хранятся в исходном незашифрованном виде в массиве. При авторизации создаётся хеш, потом при каждом запросе цикл по всему массиву с вычислениеми хеша по паролю, если совпал с присланным в запросе - то всё ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 01:47 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
У 2 способа (пароли хранятся в массиве) есть недостаток (который может быть и плюсом): пользователь (сотрудник организации) не может сменить свой пароль, это делает адимнистратор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 01:56 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
Добавлю ещё о дополнительной защите, если она требуется. Недавно поставил закрытый форум для организации, была задача скрыть форум (даже его главную страницу). С форумом работают и будут работать сотрудники филиалов компании. Филиалов немного (не более 100). Для захода на любую страницу форума требуется предварительная авторизация по коду (паролю) филиала компании. Эти коды (пароли) филиалов хранятся как раз в массиве, всё это дело работает через include созданного специально для этого php-файла. При несовпадении хеша ни с одним из вычисленных по массиву, выводится страница авторизации, иначе упарвление передаётся на движок форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 02:06 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
бухалтер фантоцциvkleбухалтер фантоцци, А как потом этим хешем авторизоваться на СУБД? я в СУБД храню хеши паролей плюс сессионные хеши (2 поля), когда происходит авторизация, в поле для сессионного хеша пишется созданный сессионный хеш, потом при каждом запросе по индексу он ищется, берётся ID, хеш пароля, текущий IP и прочие данные запроса, опять вычисляется сессионный хеш и сравнивается с записанным, если совпадает, то всё ОК.Круто, конечно. Однако, ТС спрашивал, где/как хранить логин и пароль от СУБД, которые введены в форме. Ваш же вариант предусматривает получение логина и пароля... А Вы скромно умолчали, откуда Вы его берёте, чтоб затем передать мускулю. :) Исходный вопрос совсем о другом: Сергей ЛаловКак и где еще можно хранить /задавать логин и пароль к своей базе данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 15:08 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
vkleОднако, ТС спрашивал, где/как хранить логин и пароль от СУБД, которые введены в форме. Ваш же вариант предусматривает получение логина и пароля... А Вы скромно умолчали, откуда Вы его берёте, чтоб затем передать мускулю. :) Исходный вопрос совсем о другом: Сергей ЛаловКак и где еще можно хранить /задавать логин и пароль к своей базе данных Откуда беру логин-пароль? Из формы конечно, и в случае регистрации или смены пароля, и в случае авторизации. Но дополнительно я рассказал о варианте № 2, который предусматривает только ввод уже существующего пароля (который создаёт администратор). Можно обойтись и без кук, используя хеш в строке URL (имхо это плохой способ, лично я его не одобряю). Если SPA-приложение, то можно после авторизации полученный хеш хранить так-же в переменной или в localStorage. И я понял исходный вопрос совсем по-другому - сомнение в надёжности кук. Сергей ЛаловВопрос такой, есть к примеру входная форма ,страница, на которой я ввожу логин и пароль. Ввожу один раз, но пользуюсь во время всего сеанса работы моей веб базы. В куках браузера с последующим обращением туда я не хочу хранить данные логина и пароля. даже зашифрованный пароль я смог расшифровать на специализированном сайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 18:55 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
vkleбухалтер фантоцци, А как потом этим хешем авторизоваться на СУБД?кажись, дошло, про что Вы спрашивали :) если клиенту нужно вводить логин-пароль самой СУБД, то однозначно я-бы такое запретил, в лучшем случае клиент должен знать условное имя или идентификатор СУБД и с ним работать, реальный логин-пароль должен знать только сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 19:50 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
бухалтер фантоцциесли клиенту нужно вводить логин-пароль самой СУБД, то однозначно я-бы такое запретил, Однако, пыхмайадмин, дампер, админер и еще куча подобного прекрасно работают именно в таком режиме. бухалтер фантоццив лучшем случае клиент должен знать условное имя или идентификатор СУБД и с ним работать, реальный логин-пароль должен знать только сервер.Идея хорошая, да к ней дополнительная БД (или таблица БД) напрашивается. + актуализация этой БД или таблицы по каждому чиху. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2016, 02:19 |
|
||
|
вопрос по хранению логина и пароля /активного соединения с сервером
|
|||
|---|---|---|---|
|
#18+
vkle, Вы правы конечно, если использовать https, проблем быть не должно. Можно считать, что приведённые мной выше способы я рекомендую для незащищённого соединения, у меня так вообще и на запись данных работает дополнительный хеш при каждой смене или перезагрузке страницы, неохота свои велосипеды тут расписывать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2016, 22:17 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=39231676&tid=1461084]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 375ms |

| 0 / 0 |
