если у вас нет ограничений на право просмотра опр. информации на вашем сайте для конкретных авторизованных пользователей - делайте так. если же есть ограничения на просмотр - по любому надо проверять поступившую от пользователя информацию.
depp
Вот это дельный совет, уверен кто зайдёт через поиск подчерпнёт дельную для себя информацию.
В вашем варианте тогда конечно лучше сессии, потому что с кукой нам обязательно нужно залазить в DB чтобы проверить правильность id и хеша, а если мы запишем id пользователя в сессию, то в DB залазить уже не обязательно, по крайней мере не везде. (например чтобы достать новые сообщения, доставать информацию из таблицы о пользователях не обязательно, берём id из сессии и достаём из таблицы с сообщениями).
Правильно?
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
я бы сессии в том варианте php, который есть - вообще не использовал. слишком накладно. проще всего писать в куку id и хэш. а саму сессию хранить в базе. нет ничего накладного в том, чтобы дергать постоянно инфу о пользователе из базы.
Если имеем слабенький сервер и большое количество пользователей, то сессии будут очень сильно тормозить сервер. Что имеешь ввиду хранить сессию в DB, т.е. сама пара значений id и хеш?
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
killer8080
2.11.2016 - 21:58
Цитата (RootPM @ 2.11.2016 - 17:24) |
Кроме того мне не придётся каждый раз без необходимости залезать в DB, если пользователь просто ходит по сайту и нужно показать только его логин в шапке. |
акк уже месяц как грохнули, а юзер ходит по сайту и думает что он залогинен
Цитата (RootPM @ 2.11.2016 - 17:24) |
Самое главное при таком подходе не потерять бдительность и обеспечить возможную безопасность, предложил такой вариант хеша: сгенерированное число + user_agent + login. |
а "сгенерированное число" где будет хранится? Откуда его брать чтоб сравнивать? Какова разрядность числа?
Цитата (depp @ 2.11.2016 - 18:01) |
я бы сессии в том варианте php, который есть - вообще не использовал. слишком накладно. проще всего писать в куку id и хэш. а саму сессию хранить в базе. нет ничего накладного в том, чтобы дергать постоянно инфу о пользователе из базы. |
то есть схема:
php->файл_сессии
очень затратна по ресурсам, по сравнению с:
php->БД->файл_бд
?
В базу нужно лезть в любом случае за актуальными данными, в сессии хранится только user_id. Если так напрягает лишнее обращение к hdd, можно перенести хранилище на tmpfs.
walerus
3.11.2016 - 02:29
- "Если имеем слабенький сервер и большое количество пользователей"
У меня пара вопросов:
1) Какой сервер? конфигурация его.
2) сколько человек в сутки, подразумевается под словами "большое количество пользователей" ?
По теме:
Игорь_Vasinsky дал ответ еще на первой странице
зы: 1500 человек круглосуточно проверяются(онлайн) таким образом и никаких тормозов, нагрузки, etc...
Цитата (killer8080 @ 2.11.2016 - 21:58) |
акк уже месяц как грохнули, а юзер ходит по сайту и думает что он залогинен
а "сгенерированное число" где будет хранится? Откуда его брать чтоб сравнивать? Какова разрядность числа? |
Данные авторизации проверяются только при редактировании контента (сохранить, удалить, изменить), поэтому если его заблокировали и он ничего не делает, только просматривает страницы - флаг ему в руки.
В DB, можно ещё привязать IP, но у меня больше 85% трафика с мобилок, у них он динамический.
walerus
8*2, 8
online - больше 40.000
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Слушать стоит только свою интуицию. Всякий раз, когда прислушиваешься к мнению «старших и разумных», теряешь время. Если вы чувствуете, что надо делать – игнорируйте мнение авторитетов.
killer8080
3.11.2016 - 23:04
Цитата (RootPM @ 3.11.2016 - 06:14) |
Данные авторизации проверяются только при редактировании контента (сохранить, удалить, изменить), поэтому если его заблокировали и он ничего не делает, только просматривает страницы - флаг ему в руки. |
Если юзер видит свой логин на странице, он считает что авторизован. Ты же хочешь обмануть юзера. Не самое лучшее решение с позиции юзабилити, стоит ли мнимая оптимизация этого?
К тому же если ты решил обманывать пользователя, зачем тогда вообще куки? Смысл в каждом запросе слать ненужную серверу информацию? Если уж так рьяно взялся за оптимизацию, то наверно в курсе что для рендеринга страницы браузер шлёт множество http запросов, в каждом из них будут эти куки с логином. Это же лишний трафик
Пиши тогда логин в local storage и выводи через JS на клиенте, тогда логин можно будет отображать даже на статичном html
![biggrin.gif](http://phpforum.su/html/emoticons/biggrin.gif)
Ну а что? Какая разница? Всё равно же эта информация не актуальная.
Цитата (killer8080 @ 2.11.2016 - 21:58) |
а "сгенерированное число" где будет хранится? Откуда его брать чтоб сравнивать? Какова разрядность числа?
|
ну я же не просто так спросил, это имеет прямое отношение к безопасности
Цитата (RootPM @ 2.11.2016 - 17:24) |
сгенерированное число + user_agent + login |
кстати, привязка к юзерагенту означает разрыв сессии после обновления версии браузера, при автологине такое поведение не желательно.
Цитата (killer8080 @ 3.11.2016 - 23:04) |
кстати, привязка к юзерагенту означает разрыв сессии после обновления версии браузера, при автологине такое поведение не желательно. |
Про этот момент даже не подумал. Что касается user_agent, хотел сделать небольшую защиту от перехвата или подбора идентификатора сессии, маловероятно подобрать значение из 32 байт, но всё же. Согласен что при моей нагрузке ещё можно использовать сессии (только хранить в памяти), но есть же какой то весомый повод использовать куки, как это делают в крупных проектах?
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
killer8080
4.11.2016 - 17:04
Цитата (RootPM @ 4.11.2016 - 06:44) |
хотел сделать небольшую защиту от перехвата или подбора идентификатора сессии, маловероятно подобрать значение из 32 байт, но всё же. |
зная твой алгоритм хеширования, достаточно подобрать
Цитата (RootPM @ 2.11.2016 - 17:24) |
сгенерированное число |
что намного проще, чем брутить пароль. Н а"безопасность через неизвестность" в этом деле особо полагаться нельзя. Но мой вопрос о разрядности числа так и остался без ответа.
Цитата (RootPM @ 4.11.2016 - 06:44) |
Согласен что при моей нагрузке ещё можно использовать сессии (только хранить в памяти), но есть же какой то весомый повод использовать куки, как это делают в крупных проектах?
|
Сравнение "куки vs сессии", это как "колёса vs автомобиль"
Куки - это всего лишь заголовки, с их помощью обходиться stateless ограничение http протокола, т.е. можно помечать клиента, и отличать его запросы от других. Сессии же - это механизм уровнем выше. Вопрос не в том использовать сессии или нет, вопрос в том, использовать нативную реализацию этого механизма в PHP, или изобретать свою. По каким причинам не устраивает нативная? Не нравится обращение к ФС? Так я уже выше упоминал, что файлы совсем не обязательно хранить на диске. Нужно использовать другое хранилище? Можно назначить свой обработчик через
session_set_save_handler.
У файлового хранилища проблема не в быстродействии, а в блокировках из-за чего будут тормоза при неправильном использовании с множественными ajax запросами, но ты об этом почему то не упоминул, зато борешься с лишним обращением к ФС. На фоне всего остального, что делает твой скрипт, это пшик.
Цитата (killer8080 @ 4.11.2016 - 17:04) |
будут тормоза при неправильном использовании с множественными ajax запросами |
Можно подробнее
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Синхронно делать, при использовании сессий? _ ))
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Цитата (RootPM @ 7.11.2016 - 07:32) |
Синхронно делать, при использовании сессий? _ )) |
сделай 2 скрипта
в одном сделай
session_start();
sleep(100);
echo 'hello i\'m very long operation'
во втором
session_start();
echo ' hello world'
потом в браузере открой в одной вкладке первый файлик, потом второй =) и смотри сколько времени потребуеться что бы отобразить второй ;)
bestxp
Цитата (killer8080 @ 4.11.2016 - 17:04) |
У файлового хранилища проблема не в быстродействии, а в блокировках |
На форуме обсуждался этот вопрос -
жесткая блокировка, а точнее получение в сессии эксклюзивной блокировки (запись).
Кто не понял, второй файл встаёт в очередь (пока первая сессия не отработает) и занимает свободные воркеры.
Я же не зря попросил подробнее описать, как пользоваться сессиями при использовании аякса.
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.