Привет. Написал авторизацию пользователя. Есть форма, где он вводит email и пароль, после чего все это дело проверяется по базе. Пароль хешируется, солится как тому полагается, у каждого пользователя записан уникальная хеш строка, которую записываю в сессию.
При авторизации пользователя я сравниваю уникальную строку хеша из базы с той, что находится в сессии. При этом у меня постоянно делается запрос к базе для получения уникальной строки конкретного пользователя, чтобы сравнивать потом с тем что в сессии. Такая проверка делается постоянно на страницах где нужно проверить авторизован ли пользователь.
Может ли перестать работать база данных если будет слишком много запросов к ней? Может лучше просто записать что то в сессию, например, $_SESSION['auth'] = 1, и потом проверять если 1 то авторизован. Но ведь ее смогут подделать? Или такое нельзя делать? Скажите как лучше всего будет написать.
Сессии хранятся на сервере, Куки хранятся на стороне клиента, т.е. к сессиям доступ может получить только лишь тот, кто может получить доступ и к самим файлам на сервере, а к кукам доступ может получить сам пользователь, вот они то и не безопасны.
Это нормально, вряд ли у вас там 100500 тыс активных пользователей.
antokha: зависит от многих факторов, если одновременно тысячи человек работаю с базой данных, то конечно это скажется на скорости(опять же зависит от настроек и т.д.). но вряд ли у вас там одновременно столько человек работают с базой
Александр Маджугин: сохраните в сессии и в куках запись вида auth=1 и посмотрите на результат. в браузере лишь хранится идентификатор сессии, а не само значение сессии.
IceJOKER: а я что написал?
Я разве написал что данные в сессии хранятся в куках? Я сказал что сессия это кука.
Индентификатор сессии хранится в кукаха и доступ к куками это доступ к сессии поэтому кука сессия не может быть безопаснее куков - компрометация куков == компрометация сессии.
Александр Маджугин: доступ к сессии невозможно получить с помощью кукизов, что вы несете О_О можно лишь получить доступ к идентификатору, а с его помощью нихрена не сделаешь без доступа к самому серверу, значит сессии безопаснее куков, потому что если бы данные хранились в куках, до доступ к серверу не нужен был бы!
IceJOKER: Вы читаете что я пишу? Вы понимаете что такое сессия? Зачем вы путаете данные сессии и саму сессию. Куки как раз и дают доступ к сессии. Увели куки - всё, вы можете работать в этой сессии. Вы её угнали. О какой безопасности сессии можно вообще говорить?
> если бы данные хранились в куках, до доступ к серверу не нужен был бы!
Что, простите?
Александр Маджугин: я имел в виду, что куки может править и сам пользователь, в данном случае is_auth = 1 можно было бы в ручную добавить, а с сессиями такое не прокатит.
хранить в сессии данные в 10 раз безопаснее , чем хранить в куках, т.к. данные сессии хранятся на стороне сервера и клиент имеет лишь доступ к ID сессии, а вот данные куки хранятся в браузере и их можно в любое время править, удалить, добавлять!
IceJOKER: но ТС же спрашивает не хранить ли ему данные в сессии или в куках. Он спрашивает ЧТО именно хранить в сессии. Вы утверждаете что хранить там is_auth = 1 менее безопасно чем какой-то хэш? С какого перепугу?
IceJOKER: поэтому это вопрос, что не писали. Но зачем-то стали рассказывать про данные сессии и то что она они хранятся на сервере. А кто-то предлагал вынести данные в куки? Нет. Так зачем вы про это рассказываете?
Александр Маджугин: бесите уже.
я же вам объяснил уже который раз, что сессии намного безопаснее, чем куки! если сайт example.com будет хранить is_auth = 1 у меня в куках, то я могу сам добавить это значение в куки и зайти на сайт неавторизованным, а если эти же данные сайт будет хранить в сессиях, то я хрен с два смогу с этим что-то поделать(только удалить и все) - дошло наконец???!!
IceJOKER: да, подтверждаю - бесите.
Зачем вы предлагаете хранить is_auth = 1 в куках я никак не пойму.
Но если эти данные будут хранится в сессии, то угон куков - это точно такой же угон авторизации. Если я украду ваши куки, то вам никак не поможет, то, что вы храните авторизацию в сессии. Куки уже у меня!
Зачем вы все время предлагаете мне сохранить авторазацию в виде флага в куках, а затем спорите с этим своим аргументом как с моим - вот это до меня так и не дошло.
Александр Маджугин: я разве вам предлагал? О_О еще раз повторюсь - внимательнее!
Я вам объясняю, что ХРАНИТЬ ДАННЫЕ В СЕССИИ НАМНОГО БЕЗОПАСНЕЕ , ЧЕМ В КУКАХ, что за жираф(без обид) не пойму, никак не дойдет. Чем безопасно я объяснил выше!
Я не предлагаю вам хранить и не говорю , что это обезопасит от кражи, я всего лишь пишу, что СЕССИИ БЕЗОПАСНЕЕ КУКОВ!!! Надеюсь до вас наконец дошло.
IceJOKER: Именно с этим я и не соглашаюсь. Угон куков - это угон сессии. Да, вы не получите данных из сессии. Ну и что? Вы же получите авторизацию.
Не, конечно если в сессии посетителей вы сохраняете данные своей кредитки, зачем-то, то тогда да, безусловно, это безопаснее чем в куках.
Если мы говорим про безопасность доступа к сайту (но не данных в сессии!!!), то все равно как вы храните авторизацию.
Например я у себя храню куку MASK_AUTH со случайным значением и куку с именем == MASK_AUTH и другим случайным значением. Это авторизация. Как вы собираетесь ее подделывать? Чем это хуже чем хранить просто куку сессии?
P.S. не спрашивайте почему две куки - это легаси.
Подделать сессию == подделать куку индентификатора сессии. Если у злоумышленника есть куки сессии, то абсолютно все равно как в сессии вы храните авторизацию. Если их нет, то ему никак не поможет то, что в сессии просто флаг авторизации. По безопасности два этих способа - хранить auth=1 или какой-то там хэш ничем не отличаются. Ну можно с небольшой натяжкой сказать что auth=1 чуть безопаснее, потому что хэш вы-то от пароля храните, а значит в случае получения файлов сессии у злоумышленника есть гипотетический шанс попытаться восстановить пароль по хэшу, в случае если ему попадут в руки файлы сессий.