Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Step01
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 44
1

Авторизация с использованием куки

01.11.2018, 20:55. Просмотров 2676. Ответов 41
Метки нет (Все метки)

Как правильно делать авторизацию на сайте с помощью куки? Очевидно, что просто записывать в куки id пользователя нельзя. Можно сохранять специальный пароль. Но тогда придётся на каждой странице сравнивать пароль с хешированой строкой из базы данных. А это нагрузка на сервер, ведь хеширование производится долго. Получается, нужно один раз авторизацию делать и записывать данные в сессию? Или как это делается?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2018, 20:55
Ответы с готовыми решениями:

Авторизация и куки
всем здрасти. Подскажите пожалуйста, почему если пытаться авторизоваться с...

Авторизация через куки, использовать или нет?
Всем привет, делаю сайт, сегодня сделал авторизацию и у меня встал вопрос, читав книгу php глазами...

куки
скрипт для кражи куки

Не устанавливаются куки
<?php if (setcookie("TestCookie", '111')) echo "Cookie успешно установлен!"; else echo "Cookie...

Удаление куки
Здравствуйте. Пытаюсь удалить куки, но выдает ошибку: Вот начала этого кода: <?php include...

41
Jodah
Эксперт PHP
2777 / 2429 / 1035
Регистрация: 01.08.2012
Сообщений: 8,570
01.11.2018, 21:13 2
Лучший ответ Сообщение было отмечено Para bellum как решение

Решение

Генерируете длинную рандомную строку и записываете её в куки и базу. И сравниваете их при заходе на каждую страницу.

Ну и id юзера тоже записываете и сравниваете, чтобы перед записью рандомной строки в базу не нужно было проверять её на уникальность.
0
Step01
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 44
01.11.2018, 21:18  [ТС] 3
Если строка не хеширована, то способ ненадёжный. Когда на сайте пользователи держат персональные данные так нельзя делать
0
Jodah
Эксперт PHP
2777 / 2429 / 1035
Регистрация: 01.08.2012
Сообщений: 8,570
01.11.2018, 21:25 4
Цитата Сообщение от Step01 Посмотреть сообщение
Если строка не хеширована, то способ ненадёжный.
Чем? Зачем вам именно хэш в куках?

Цитата Сообщение от Step01 Посмотреть сообщение
Когда на сайте пользователи держат персональные данные так нельзя делать
Почему?
0
Step01
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 44
01.11.2018, 21:29  [ТС] 5
Цитата Сообщение от Jodah Посмотреть сообщение
хэш в куках?
Хеш не в куках, а в БД
Цитата Сообщение от Jodah Посмотреть сообщение
Почему?
Это элементарные меры безопасности
0
Jodah
Эксперт PHP
2777 / 2429 / 1035
Регистрация: 01.08.2012
Сообщений: 8,570
01.11.2018, 21:40 6
Цитата Сообщение от Step01 Посмотреть сообщение
Хеш не в куках, а в БД
Хорошо. Зачем вам хешированная строка, чем она отличается от обычной?

Цитата Сообщение от Step01 Посмотреть сообщение
Это элементарные меры безопасности
Ок, можете скинуть какую-нибудь ссылку в качестве подтверждения?

Добавлено через 6 минут
Цитата Сообщение от Step01 Посмотреть сообщение
Получается, нужно один раз авторизацию делать и записывать данные в сессию?
При старте сессии юзеру отправляется кука с именем PHPSESSID. Поэтому этот вариант будет работать также, как предложенный мной, только больше лишних звеньев.
0
Step01
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 44
01.11.2018, 21:40  [ТС] 7
Цитата Сообщение от Jodah Посмотреть сообщение
Ок, можете скинуть какую-нибудь ссылку в качестве подтверждения?
Ссылку на что? На взломанный сайт?
Тема создана не для того, чтобы обучать вас безопасности. В сети полно информации. Здесь задан конкретный вопрос
0
Jodah
Эксперт PHP
2777 / 2429 / 1035
Регистрация: 01.08.2012
Сообщений: 8,570
01.11.2018, 21:50 8
Цитата Сообщение от Step01 Посмотреть сообщение
Ссылку на что?
Вы же сказали, что это элементарные меры безопасности. Значит кто-то где-то в интернете должен был об этом написать и не раз. Я подобного никогда не встречал, поэтому и спрашиваю.

Цитата Сообщение от Step01 Посмотреть сообщение
Тема создана не для того, чтобы обучать вас безопасности.
Разумеется, но форум на то и форум, чтобы вести дискуссии. Я предложил вариант, вы назвали его небезопасным и не пояснили причину, поэтому я и прошу какие-нибудь пруфы.
0
estic
24 / 20 / 5
Регистрация: 01.10.2018
Сообщений: 144
02.11.2018, 12:30 9
Цитата Сообщение от Step01 Посмотреть сообщение
Тема создана не для того, чтобы обучать вас безопасности. В сети полно информации. Здесь задан конкретный вопрос
Jodah в своем первом сообщении дал достаточно полный ответ на ваши вопросы.
1
Para bellum
Эксперт PHP
4152 / 3087 / 999
Регистрация: 06.01.2011
Сообщений: 9,021
02.11.2018, 13:04 10
Ответ Jodah верен. Автор темы вообще не понял, о чём речь.
2
tarasalk
1211 / 724 / 288
Регистрация: 13.06.2013
Сообщений: 2,546
02.11.2018, 13:35 11
На самом деле подобное хэширование действительно имеет место быть. БД могут угнать или какой-то сотрудник воспользуется доступом к БД в своих целях... в таком случае знание хэша само по себе ничего не даст.
Цитата Сообщение от Step01 Посмотреть сообщение
А это нагрузка на сервер, ведь хеширование производится долго
С чего вы взяли что долго?
0
Jodah
Эксперт PHP
2777 / 2429 / 1035
Регистрация: 01.08.2012
Сообщений: 8,570
02.11.2018, 13:44 12
Цитата Сообщение от tarasalk Посмотреть сообщение
БД могут угнать или какой-то сотрудник воспользуется доступом к БД в своих целях...
Если вы имеете ввиду хеширование пароля перед записью в базу - полностью согласен. Но что и зачем предлагает хешировать ТС, я так и не понял.
0
tarasalk
1211 / 724 / 288
Регистрация: 13.06.2013
Сообщений: 2,546
02.11.2018, 13:51 13
Jodah, я так понял речь про куку. Зная ее можно делать запросы от имени юзера без всяких паролей.
0
Para bellum
Эксперт PHP
4152 / 3087 / 999
Регистрация: 06.01.2011
Сообщений: 9,021
02.11.2018, 13:54 14
Цитата Сообщение от Jodah Посмотреть сообщение
Но что и зачем предлагает хешировать ТС, я так и не понял.
Ту строку хочет хешировать перед записью в БД, которую вы предложили генерировать. Чтобы кто-то не мог, взломав БД, подставить ту строку к себе в cookie и авторизоваться на сайте таким образом.

Я считаю, что хешировать её не нужно. Лучше шифровать содержимое cookie, например, как в Laravel. Тогда и сотрудник, упомянутый tarasalk'ом не сможет cookie подделать и любой другой злоумышленник.
1
Step01
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 44
02.11.2018, 15:06  [ТС] 15
Цитата Сообщение от Jodah Посмотреть сообщение
что и зачем предлагает хешировать ТС, я так и не понял
Я ничего не предлагаю. Я спрашиваю, как делается авторизация с использованием куки. Предложили держать в базе данных незашифрованный пароль и записывать его в куки. Я спорить ни с кем не собираюсь, просто хочу найти другие идеи, а точнее способ, который обычно используется на реальных сайтах. Насчёт шифрования куки понял, но не уверен, что я смогу хорошо зашифровать. Хеширование надёжнее
0
Para bellum
Эксперт PHP
4152 / 3087 / 999
Регистрация: 06.01.2011
Сообщений: 9,021
02.11.2018, 15:11 16
Лучший ответ Сообщение было отмечено Step01 как решение

Решение

Цитата Сообщение от Step01 Посмотреть сообщение
Насчёт шифрования куки понял, но не уверен, что я смогу хорошо зашифровать.
openssl поможет.
1
Step01
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 44
02.11.2018, 15:39  [ТС] 17
Насколько я понимаю, расшифровка имеет свою стоимость. Чем тогда это отличается от сравнения с хэшем? В любом случае, при переходе пользователя по страницам эту расшифровку придётся каждый раз делать. Я хочу понять, на практике так делают, или авторизацию в сессию записывают или это как-то по-другому делается
0
Jodah
Эксперт PHP
2777 / 2429 / 1035
Регистрация: 01.08.2012
Сообщений: 8,570
02.11.2018, 18:12 18
Цитата Сообщение от Step01 Посмотреть сообщение
Предложили держать в базе данных незашифрованный пароль и записывать его в куки.
Ни в коем случае, пароль хранится в БД в виде хеша, сгенерированного функцией password_hash и в куках не используется. А в куки (и базу тоже) отправляется длинная строка из случайных символов, никак не связанных с паролем.
0
Para bellum
Эксперт PHP
4152 / 3087 / 999
Регистрация: 06.01.2011
Сообщений: 9,021
02.11.2018, 19:15 19
Цитата Сообщение от Step01 Посмотреть сообщение
Я хочу понять, на практике так делают, или авторизацию в сессию записывают или это как-то по-другому делается
Делают.
0
Step01
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 44
02.11.2018, 20:04  [ТС] 20
Цитата Сообщение от Jodah Посмотреть сообщение
отправляется длинная строка из случайных символов
Я именно этот пароль имел в виду. Какой смысл хешировать один пароль, если есть другой незашифрованный. Если их украдут, то оба))
Цитата Сообщение от Para bellum Посмотреть сообщение
Делают.
Ясно, спасибо
0
02.11.2018, 20:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2018, 20:04

куки не удаляются(
Доброе время суток всем Подскажите пожалуйста, почему у меня не удаляются куки??? что я делаю не...

Кража куки
Здравствуйте. Возник такой вопрос. Как избежать кражи кукисов. Точнее пусть их украдут, но...

Не удаляются куки
На сайте аутентификация по кукам. И вот этот код почему-то их не удаляет... setcookie("login", "",...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru