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

Количество пользователей под 1 учетной записью

03.02.2020, 15:15. Показов 1170. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Прошу заранее если подобные темы уже были и не кидаться камнями, я только начал читать книгу PHP 7 в подлиннике. Дмитрий Котеров" и учить php)
Написал простой сайт. Добавил авторизацию.
Раньше делал при авторизации записывал id пользователя в сессию и собственно везде проверял. Сейчас прочитал что данные о пользователе вообще лучше не хранить.
Также при такой авторизации под одной учетной записью могут сидеть хоть 5 человек.
Решил исправить данную ситуацию.

Сейчас при авторизации создаю ключ через bin2hex(random_bytes(125) далее записываю в отдельную таблицу его и id пользователя и также записываю в сессию ключ и id.

Потом при проверке к примеру переход на страницу делаю запрос в бд где получаю последний созданный ключ фильтруя по id_user и сверяю с ключом в сессии. Если все успешно то делаю действие иначе разлогиниваю пользователя.

И так по всем действиям.

Тут я решил следующую проблему. Если кто то пытается зайти под логином и паролем с другого пк, то первого при любом действие уже разлогинет, так как ключ уже новый.

Вроде норм.

Но тут я прочитал что можно взять подсмотреть сессию в браузере и подставить к себе, тогда спокойно зайдешь на сайт и у меня снова 2 пользователя под 1 учетной записью.

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

Собственно как лучше построить проверку чтобы под учетной записью мог сидеть только 1 пользователь.

Можно без примеров просто на словах.
Вроде корректно объяснил.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2020, 15:15
Ответы с готовыми решениями:

Вход под учетной записью пользователя
Здравствуйте. У меня возникла проблема. Подключался я к адресу 10.10.10.11 по локальной сети. При подключении появилось окно ввода...

Вход под доменной учётной записью
Всем привет. Столкнулся с проблемой. При попытки входа под доменной учёткой не важно куда, что на сам сервер, что на компьютере...

Войти под другой учетной записью
Вин 10, стартовый экран залочен на одну единственную учетку, кнопочки войти под другой учетной записью не вижу. Есть варианты только сон,...

2
Невнимательный
 Аватар для ft4l
2837 / 1262 / 358
Регистрация: 08.02.2013
Сообщений: 7,350
Записей в блоге: 2
03.02.2020, 17:28
Цитата Сообщение от offline54 Посмотреть сообщение
bin2hex(random_bytes(125) далее записываю в отдельную таблицу его и id пользователя и также записываю в сессию ключ и id.
Не понятно что у клиента проверяется, кроме SID...
Если например кроме стандартного $_COOKIE['PHPSESSID'], Вы на клиент сохраняете ещё $_COOKIE['KEY'],
чтобы сравнивать с хранящимся в файле сессии на сервере...
То как бы есть какой-то смысл, так как кроме PHPSESSID , будет проверяться ещё посылается ли ключ...

и как-бы уже недостаточно кражи одного только PHPSESSID
но если можно украсть Cookies, то можно украсть их сразу все
типа это только защита от случайного совпадения PHPSESSID, или полученного путём перебора, но не от кражи.
про перебор наверное загнул )) но совпадения при стечении обстоятельств возможны

Хранение в сессии например ещё $_SERVER['REMOTE_ADDR'], или если "данные о пользователе вообще лучше не хранить"
хранение хэша этого значения, уже как-то лучше, за исключением того что юзер выпал из сети, зашёл снова,
провайдер присвоил ему новый IP, и придётся снова увидеть форму ввода пароля.
Что так-же бывает если время жизни сессии на сервере не велико, и залогиненый клиент не проявлял активность чуть дольше.

Или если вы с помощью похожего $_COOKIE['KEY'], даёте возможность автоматического входа, типа как чекбокс "запомнить надолго"
пользователю автоматом заводться новая сессия, как залогиненому... даже возможно без дополнительных проверок,
типа обновился-ли USER_AGENT у браузера, или назначил-ли провайдер новый IP.
Многим так удобнее можно даже перегенерировать ключи при новом автовходе без сессии

Кража кукисов подразумевает что или на сайте есть уязвимости , допускающие применение xss-инъекций,
или тупо позагружаются левый javascript, с других ресурсов, неизвестного содержания...
или система взломана, и браузеры дано работают как часть одного большого ботнета и всё что можно давно уже складируется в датацентрах злоумышленников

Добавлено через 8 минут
и ещё
An HttpOnly cookie means that it's not available to scripting languages like JavaScript. So in JavaScript, there's absolutely no API available to get/set the HttpOnly attribute of the cookie, as that would otherwise defeat the meaning of HttpOnly .
Но это не значит что в сети не может быть кражи заголовков запроса/ответа ))

Добавлено через 34 минуты
Цитата Сообщение от offline54 Посмотреть сообщение
Количество пользователей под 1 учетной записью
Забыл о самой теме
Просто мне непонятно почему Вы думаете что количество пользователей и количество залогиненых клиентов
это одно и то-же количество .... Я например иногда с нескольких браузеров мог что-то просматривать, типа для сравненния )
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 5
04.02.2020, 03:52  [ТС]
x_lab, у меня как раз сохраняется ключ и id еще (хочу вместо id создать также случайное сочетание).
Посторонних скриптов у меня нет и не будет (по крайней мере пока что, все пока пишу на php , так как изучаю его).
А про количество пользователей - у меня по смыслу сайта должен под одну учетную запись заходить и сидеть только 1 человек.
Вообщем понял суть ваших мыслей и они чем то схожи с моими. Большое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2020, 03:52
Помогаю со студенческими работами здесь

Работа с данными под учетной записью
Доброго времени суток, уважаемые форумчане! Не без помощи вашего форума сделал БД для работы под учетными записями. Но т.к. знания в...

Работа службы под учетной записью пользователя
Привет, служба работает под учетной записью пользователя, если пользователь изменит пароль, его нужно будет менять в настройках службы? ...

Программа не работает под другой учетной записью
Есть консольная программа, которая удаляет файлы. Локально на машине она работает, но если требуется это сделать на сервере, где...

Не работает the bat под ограниченной учетной записью
САБЖ. Система ХР. The Bat 3 версия. Перенес файлы ящика в папку "c:\Documents and Settings\All Users\Документы\theBat\", но...

Запуск msg под определенной учетной записью
День добрый. Ситуевина: есть сеть на базе AD. Сам контролер на 2003 сервере. станции вперемешку ХП и 7. есть скриптик прикольный...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru