На сайте имеется система авторизации. От паролей я решил отказаться в угоду безопасности. На странице авторизации имеется поле для ввода email. При вводе email и отправке запроса на сервер на этот email отправляется код подтверждения, который представляет собой 6 значное число. Пользователя перебрасывает на страницу с полем ввода, где требуется ввести код подтверждения. Если пользователь вводит неверный код, то ключ авторизации ему не выдается и страница просит ввести код заново. Если кто-то вводит неверный код больше 10 раз, то аккаунт блокируется. Если код введен верно, возможны две ситуации. Если пользователь на странице авторизации не поставил галочку в поле Запомнить меня, то в сессию сохраняется объект класса User, через который можно получать все данные пользователя, которые нужны для пользования сайтом(id, email и тд). В общем, пользователь авторизирован, но после закрытия браузера сессия будет уничтожена. Если пользователь на странице с авторизацией поставил галочку в поле Запомнить меня, то помимо сессии в куки файл сохраняется дополнительный ключ авторизации. Зачем он нужен? Он нужен для авторизации после уничтожения сессии. Ключ авторизации представляет собой код подтверждения(отправленный на почту), который при помощи конкантенации склеивается со строкой-солью(хранится не сервере, никто не знает значение). Соль нужна для того, чтобы сторонний пользователь вручную не создал куки с ключом авторизации, который просто подобрал(без соли ключ-это просто число, уйдут секунды на его подбор). Далее склеенная строка зашифровывается при помощи необратимого шифрования. Этот ключ сохраняется в базу данных(в ячейку пользователя) и в куки файл. Теперь, после закрытия браузера сессия уничтожится, а куки с ключом останется. Далее, при входе на сайт, на каждой странице сайта происходит извлечение хэша из куки файла и сравнения его с хэшем в базе данных каждого пользователя. Если у кого-то из пользователей хэши идентичен, то устройству с куки файлом выдается сессия с данными пользователя, после чего пользователь авторизован. Также куки файл нужен для функции Выйти со всех устройств, при активации которой из базы данных удаляется ключ авторизации. После этого, как только пользователь с куки файлом, в котором находится ключ доступа, обновляет страницу, активируется функция сравнения ключа в базе данных и ключа в куки. Если ключи не совпадают, то сессия пользователя удаляется(произведен выход из аккаунта). Требуется повторная авторизация. Проблема системы в том, что если сторонний пользователь получит куки с ключом авторизации, то он получит доступ к аккаунту. В связи с этим возникает вопрос, насколько защищены файлы cookie от воровства?
Slava Rozhnev, анекдот про неуловимого джо в интернете не работает, к сожалению.
Все что можно стырить - тырят просто походя, проходя широким неводом.
понятно что за тобой персонально никто не охотится, но скрипт-кидди все равно сканируют всё и вся, просто на автомате.
И если бы всё было так просто как там ниже один иксперт разливается, то акки бы ломали каждый день. Меня бы уж точно давно на тостере задефейсили - обиженные тут стадами ходят :)
изобрели этакую 2х факторную авторизацию, только теперь юзеру нужно сходить на почту и скопировать ваш пароль, на мобилке это очень удобно, или еще раз вбивать пасс к почте