[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: После авторизации как лучше хранить данные?
Страницы: 1, 2
Jack_White
Интересует ваше мнение по поводу того, как лучше, безопасней и правильнее хранить данные пользователя после его авторизации.
Допустим варианты:
1) Хранить в сессии уникальную строку и по этой строке вытаскивать необходимые данные каждый раз из Базы. Но тут у меня возникают сомнения не будет ли напряг на базу если при каждом переходе скрипт будет запрашивать у базы данные.
2) или запихнуть все данные в сессию и просто на каждой странице вытаскивать их?

Здесь вопрос именно про базу и сессии, без кук.
Интересно как вы это реализуете в своих сайтах...
YVSIK
когда запущены сессии в них храняться переменные и видны на всех страницах на которых есть в самом начале эти строчки <?php session_start(); это значит страница работает в сессии и видит эти переменные которые там есть
переменные становятся на это времы глобольными и видны всегда до окончания
из-за их глобальности они всегда видны
и нет нужды обращаться к базе , что и не происходит , один раз положил их туда и всё
Цитата
1) Хранить в сессии уникальную строку и по этой строке вытаскивать необходимые данные каждый раз из Базы.

а зачем такой изворот? smile.gif положи данные один раз, не уникальную строку, а то что эта строка будет всегда вытаскивать



_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
Игорь_Vasinsky
перевод:

В сессиях можно хранить даже массивы, поэтому что хочешь там и хранишь, но тока рационально.

Хранить пароль в сессиях не безопасно - это запомни.

Для надёжности можешь использовать session_id() - он уникален для каждой сессии. Проверяй её соответствие при сёрфе по сайту.


а про бызу не понял...база это уже база, хранив сессия то что тебе может понадобиться ибо это менее ресурсоёмко нежели обращение к БД.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Jack_White
Нет, я имел ввиду:
у меня две таблицы 1 - users(id,login, pass...), 2 - sessions(id_s, id_user, sess_id) к примеру, при авторизации делается запись в sessions, и проверяется соответствие sessions_id() == sess_id как бы авторизовался ли пользователь... А вот как лучше сделать с остальными данными логином например, вытаскивать его из базы каждый раз или сохранить в сессии?
Семён
Игорь_Vasinsky laugh.gif

Jack_White
Ну собственно особой разницы нет, однако есть отличия, начну с того:
1) В двух случаях данные всё равно будут храниться в сессии.
2) Создание уникального хеша в базе после авторизации, реализовано лишь для того, чтобы сделать на сайте функцию "запомнить меня", где в cookie пишется не логин и пароль, а идентификатор сохранённой сессии, по которой можно re-авторизировать пользователя.
3) На счёт как хранить в сессии или вытаскивать из базы, без разницы, только в случае с базой используйте кеш, (но я посоветовал бы использовать сессии)
UnWind
Я вообще делаю авторизацию на cookie.
Храню id и пароль в md5 (шифрую несколько раз), ну и при необходимости, остальные данные вытаскиваю из базы.


_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!
Семён
UnWind
В таком виде это крайне небезопасно.
UnWind
Семён
Хм. Просвяти...

_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!
Jack_White
Семён
Если хранить в куках идентификатор сессии то в чем смысл "запомнить меня", ведь сессия уничтожается после закрытия браузера в основном? Смысл хранить идентификатор сессии которой уже нет?
UnWind
А почему сессии обходишь стороной?

Мне кажется, что не всегда имеет смысл хранить в куках например чужой пк...
Семён
UnWind
При твоём способе тебе просто необходима 3-я вспомогательная кука состоящая из
md5(IP+username+(какой-то секретный_ключ)+UserAgent)
и при авторизации по кукам, проверять соответствие username+password с комбинацией hash-a, иначе не дай бог при нахождении XSS уязвимостей будут легко угнаны auth данные минимум обычных юзеров, а как максимум аккаунты админов.
UnWind
Семён
Хм. Ну про это я знаю, этим конечно не удивил.
Так что, уязвимостей не вижу)

З.Ы. - секретный ключ только не делал, у меня не много другая организация, посложнее.

Jack_White

Для меня это уже привычно, к тому же как ты сам и сказал - сессия удаляется постоянно после закрытия броузера.
В этом и ответ на твой вопрос)

_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!
Семён
Jack_White
Мыслишь слишком примитивно, ты сам генерируешь id сессии, пишешь в базу её хэш, в куки пишешь id хэша, в коде проверяешь:
если в куках есть хэш
проверим есть хэш в таблице сессий
если да:
авторизируем пользователя создав ему сессию и наполнив её данными исходя из user_id в таблице сессий
иначе:
заставим юзера авторизироваться занава.
Семён
UnWind
Я тебе сказал, просто что может произойти) и почему это небезопасно)
в своё время изза того что человек допустил оплошность в регулярном выражении, у нас на проекте хакер воспользовался XSS уязвимостью и угнал данные одного из админов.
UnWind
Семён
Понятно) У нас на работе на гос сайте - другая проблема была.
Тоже сидел разработчик php, я ему все говорил с коллегой что бы переменные сразу отфильтровывал, а он все говорил - потом, потом. В результате после того, как мы выложили сайт, буквально через неделю было написано на гос сайте "Ваш сайт х**".

Вывод из обоих случаев - если руки прямые и не ленишься, то проблем никаких не будет.

_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!
Jack_White
Семён
Ну т.е. по твоему каждый раз доставать данные из базы если хеш в куках совпадает с хешом в таблице сессии?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.