Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383

Авторизация на сайте

16.10.2019, 08:32. Показов 745. Ответов 8

Студворк — интернет-сервис помощи студентам
Как правильно организовать авторизацию на сайте?
1) Пользователь вводит логин и пароль.
2) Из БД получаем хеш пароля для данного логина, проверяем password_verify('введенный_пароль','хеш' )
Далее необходимо авторизовать юзера, например, на 2 недели или месяц. Как правильно сделать?
1) Читал, что нужно в БД хранить хеш авторизации, а у пользователя ставить хеш авторизации в куку, и потом сравнивать, равны ли они или нет.
2) Читал, что можно дать жить session после закрытия браузера, но так не по феншую
Что посоветуете?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2019, 08:32
Ответы с готовыми решениями:

Авторизация на сайте
Здраствуйте, помогите авторизоваться на сайте с помощью библиотеки cURL. Форма аторизации: <form action="?set=login"...

Авторизация на сайте
Уважаемые форумчане, подскажите пожалуйста пример скрипта который, исключает возможность входа на сайт двум и более пользователям под одним...

Авторизация в ВК на сайте
вот код: <?php class Auth_Vk{ private $code; private $token; private $uid; public function __construct() { require...

8
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
16.10.2019, 09:30
Если авторизовать юзера то ставьте куки на время жизни 2 недели или месяц. Сессия удаляется при закрытии браузера.
0
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
16.10.2019, 11:06  [ТС]
Цитата Сообщение от Azdeman Посмотреть сообщение
Сессия удаляется при закрытии браузера
А если сделать так?
PHP
1
2
session_set_cookie_params(86400);
ini_set('session.gc_maxlifetime', 86400);
0
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
16.10.2019, 17:37  [ТС]
up topic
0
 Аватар для CoderHuligan
1753 / 1018 / 257
Регистрация: 30.06.2015
Сообщений: 5,130
Записей в блоге: 56
17.10.2019, 04:59
Цитата Сообщение от евгенийпро Посмотреть сообщение
1) Читал, что нужно в БД хранить хеш авторизации, а у пользователя ставить хеш авторизации в куку, и потом сравнивать, равны ли они или нет.
Хэш авторизации(пароля) лучше в куку не ставить вообще. Лично я так поступаю. Хэш пароля должен лежать в одном месте - в базе данных, на сервере, и нигде больше. Как авторизовать? Ставим в куку временный токен, тот же хэш, который рэндомно генерируется при каждом заходе пользователя на сайт. Токен хранится в базе и куке и постоянно меняется при каждом запросе пользователя. Если хакер украдет токен, то ему нужно будет успеть прежде пользователя, первым, зайти на сайт, чтобы что-то там поломать. Если пользователь зайдет первым, то хакеру автоматически - облом. Если хакер опередил пользователя, все равно он не узнает настоящий хэш пароля, и при следущей попытке входа на сайт настоящего пользователя, ему (пользователю )надо будет снова авторизоваться и токен сменится, и опять хакеру облом, хотя теоретически хакер может успеть что-то сделать от имени пользователя, но это легко устраняется либо силами самого пользователя либо если сил не хватает модераторами сайта.
Цитата Сообщение от евгенийпро Посмотреть сообщение
2) Читал, что можно дать жить session после закрытия браузера, но так не по феншую
Конечно не по "шую". Сессия на то и сессия, что временная, в этом её сила.

Добавлено через 11 минут
Естественно, что нужно ставить ещё и csrf-токен в каждую форму (не в куку), которая отправляется пользователю для избежания межсайтового скриптинга. Он тоже генерируется каждый раз заново, но здесь уже с применением соли из текущего ip пользователя. Он тоже хранится в базе.
Такая двойная проверка двух токенов достаточно надежна на практике.
0
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
17.10.2019, 05:58  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Токен хранится в базе и куке и постоянно меняется при каждом запросе пользователя
не велика будет нагрузка на БД ? Например, если говорить об онлайн играх, там некоторые действия надо по 20-40 раз выполнить. Если 100 пользователей в 1 момент времени будут это действие выполнять, придется каждый раз базу дергать.

Добавлено через 10 минут
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Хэш авторизации(пароля) лучше в куку не ставить вообще
не обязательно пароля. Можно, например, так:
PHP
1
'time()'+'_случайная строка_'+'еще что-то'
Потом при каждом заходе пользователя на сайт смотреть, есть ли в определенной куке что-то. Если есть, получить из этого time(), проверить, прошло ли 2 недели-месяц, и, если не прошло, авторизовывать автоматически, создав сессию и снова генерировать строку.
Если я правильно понимаю, этот сайт в куках хранит дату последней авторизации
0
 Аватар для CoderHuligan
1753 / 1018 / 257
Регистрация: 30.06.2015
Сообщений: 5,130
Записей в блоге: 56
17.10.2019, 07:51
Цитата Сообщение от евгенийпро Посмотреть сообщение
не велика будет нагрузка на БД ? Например, если говорить об онлайн играх,
Надо чем-то жертвовать. Если это онлайн игры, то безопасностью. Если у вас сайт-магазин или т.п. то тут безопасность превыше производительности.
Цитата Сообщение от евгенийпро Посмотреть сообщение
Потом при каждом заходе пользователя на сайт смотреть, есть ли в определенной куке что-то. Если есть, получить из этого time(), проверить, прошло ли 2 недели-месяц, и, если не прошло, авторизовывать автоматически, создав сессию и снова генерировать строку.
Так такую куку можно изменить самим пользователем.
0
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
17.10.2019, 08:16  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Так такую куку можно изменить самим пользователем.
Заметил, что на некоторых сайтах в куках ничего не хранится, кроме яндекс метрики. Как они запоминают авторизацию?
0
 Аватар для CoderHuligan
1753 / 1018 / 257
Регистрация: 30.06.2015
Сообщений: 5,130
Записей в блоге: 56
17.10.2019, 10:23
Цитата Сообщение от евгенийпро Посмотреть сообщение
Как они запоминают авторизацию?
Скорее всего при помощи сессий.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2019, 10:23
Помогаю со студенческими работами здесь

авторизация на сайте
Господа, приветствую! есть вопрос - на сайте есть форма авторизации. Вот кусок исходного кода <form action="index.php"...

Авторизация на сайте
Здравствуйте помогите создать авторизации на сайте с помошю сессии

Авторизация на сайте
Новичок. Хочу сделать авторизацию на сайт - изучаю материалы и пришел к выводу, что моему сайту нужна хорошая безопасность в этом плане,...

Авторизация на сайте
Всем привет. помогите кто чем может Делаю на сайте авторизацию все вроде нормально авторизуется но если небольшая проблема после...

Авторизация на сайте
У меня есть сайт с админ панелькой, мне надо сделать так , что бы на страницу mysite.ru/admin/index.php можно было зайти только посте...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru