eucalipt
@eucalipt
Самоделкин.

Насколько правильными являются следующие подходы?

Здравствуйте. Делаю регистрацию на свой сайт и столкнулся со следующими вопросами, которые просто не дают мне покоя.

1. Насколько грамотно, правильно и безопасно хранить данные пользователя в следующем виде?
Есть у меня одна кука "UD". В ней информация о пользователе хранится в следующем виде: 191c90e0e6ad59a59588b23fb896ef0b-000014
Здесь набор символов до "-" - это шифр пароля (нет-нет, он не один (шифр), пароль, лежащий в самой БД до этого тоже был очень сильно зашифрован), а цифры после "-" - id пользователя. Также есть сомнения по-поводу того, что если эту куку "угонят", то смогут получить доступ к аккаунту этого пользователя. Другое дело, что любую куку угнать можно.

2. Как избежать перенагрузки на БД при следующем подходе?
Каждый раз, когда загружается любая страница моего сайта, мне нужно отобразить в шапке (да и не только, например) имя и фамилию пользователя, а также его аватар, путь к которому хранится в БД. Но ведь я так сервер положу? Только представьте, что будет, если (знаю, эта сумма для меня недостижима, это просто для примера) 100'000 пользователей одновременно откроют по 10 страниц каждый. С другой стороны, такой подход дает возможность постоянно "следить" за статусом пользователя, забанен он или нет. Я не знаю, может быть есть какой-то способ, позволяющий избежать такого? Просто мне кажется просто убийственным каждый раз при загрузке посылать запрос в БД, узнающий по обрезанному из куки ID имя, фамилию, статус аккаунта и аватар аккаунта пользователя.

У кого какие советы есть по этому поводу? Может быть я зря парюсь, может быть сервера намного более выносливы, чем я думаю?
  • Вопрос задан
  • 2587 просмотров
Решения вопроса 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1. Норм. Для полного счастья можно генерить новую куку при каждой авторизации.
Что бы их не своровали - https
2. Не надо заниматься преждевременной оптимизацией.
Сотни тысяч пользователей Одновременно - это проект с сотнями серверов
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Допустим, мы хотим держать пользователя залогиненным долгое время (месяц или больше). Что у нас меняется на одном и том же устройстве? Только IP.
Привяжите в генерацию HASH-ключа hash(logonName+UserAgent+password).
Логику используйте https://ru.wikipedia.org/wiki/CRAM-MD5

2. Храните основные данные пользователя в сессии (сохранить сразу после авторизации).
При выполнении важных операций делайте проверку на бан из базы данных.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Supme
@Supme
Просто системный администратор
Сервер выносливые, ну не до таких, может, цифр как в вопросе, но... есть еще всякие memcache, apc, redis, таблицы в базе memory.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
от 300 000 до 500 000 ₽
05 мая 2024, в 23:43
8000 руб./за проект
05 мая 2024, в 23:39
3000 руб./за проект
05 мая 2024, в 23:36
3000 руб./за проект