Действительно ли необходимо хранить имя пользователя / пароль в переменной SESSION?

Этот вопрос больше о концепции, чем о самой проблеме кода.
Я нахожусь в каком-то проекте, которому нужна настраиваемая веб-почта, и, поскольку я парень из Windows, я решил использовать бэкэнд с hMailServer + PHP. Но потом возникли первые сомнения: hMailServer предоставляет мне поддержку COM API, к какому методу можно обращаться через PHP, это хорошо. Так что для входа в систему я мог бы сделать что-то вроде:

<?php
$obBaseApp = new COM("hMailServer.Application");
$obBaseApp->Authenticate("[email protected]", "12345") or die('Invalid user');
?>

Чтобы получить электронную почту внутри почтового ящика текущего вошедшего в систему пользователя, мне нужно сделать:

$obBaseApp = new COM("hMailServer.Application");
$obBaseApp->Authenticate("[email protected]", "12345") or die('Invalid user');

$obDomain = $obBaseApp->Domains->ItemByName("privmail.local");
$obAccount = $obDomain->Accounts->ItemByAddress("[email protected]");
$obMessage = $obAccount->Messages;
$totalMessages = $obMessage->Count;

for ($i = 0; $i < $totalMessages; $i++)
{
echo $obMessage->Item[$i]->Subject;
}

Итак, давайте представим следующий сценарий: на странице входа в систему я использую первый код, размещенный выше, чтобы проверить, действителен ли вход в систему … Если он действителен, я перенаправляю на страницу входящих сообщений, где я анализирую все электронные почты … Но для этого мне нужно сохранить имя пользователя / пароль, сохраненные в переменной сеанса, и худшее: расшифровано! Это правильный способ сделать это?

0

Решение

После того, как вы подтвердите пользователь генерирует случайный sha512 хэш для него, сохранить его в своей записи БД, прикрепить его к сеансу и только сохранить session ID в их печенье.

Таким образом, браузер пользователя будет запрашивать состояние сеанса, ваш скрипт будет искать хеш, соответствующий сессию, и затем принимать решение о разрешении доступа.

Рекомендуется принять дополнительные меры предосторожности: сохранить пользовательский агент, IP-адрес, установить время окончания сеанса, определить время простоя и т. Д.

РЕДАКТИРОВАТЬ: принимая во внимание, что developerwjk сказал.
Если вам действительно нужно работать с простыми паролями для hMailServer это ужасно Обычный пароль никогда не должен храниться где-либо, кроме базы данных или сеанса.
После регистрации пользователя вы должны сгенерировать hash сделано из их salt + password сохраните его как пароль и передайте только hMailServerЧто касается идентификации, как я уже говорил выше session ID <-> hash <-> access,
Каждый раз, когда они входят в систему, вы снова генерируете хеш, таким же образом, и впускаете их, если хэши совпадают.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]