Сессии PHP и уникальные токены пользователя - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь реализовать что-то вроде OAuth в PHP, и я хочу дать токены пользователям, чтобы они могли использовать свои личные ресурсы.Каждый пользователь сначала должен войти в систему со своим адресом электронной почты и паролем и получить уникальный токен, который будет действителен вечно, если он не будет работать в течение «n» минут.Поэтому, если в течение «n» минут нет запросов, токен должен быть уничтожен.Токен будет использоваться для доступа пользователей к частным ресурсам.

Одна вещь, которую я могу придумать, это сделать так:1006 * и при входе в систему со своим именем пользователя и паролем там будет создана запись с уникальным токеном.Будет установлена ​​последняя доступная временная метка, и пользователь получит уникальный токен в качестве ответа.Токен теперь можно использовать для доступа к частным ресурсам пользователя, и он должен будет пройти со всеми запросами, требующими токен.Каждый частный запрос будет проверять, имеет ли последняя отметка времени и текущая отметка времени «n» разницы, если да, уничтожить токен.В противном случае отправьте ответ с запрошенными ресурсами и установите для последней отметки времени текущую отметку времени.

Имеет ли это смысл?Или может быть другой эффективный способ сделать это?

Я хотел бы добавить, что токен должен быть похож на то, что твиттер или фейсбук возвращают из своего API.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Если вы хотите реализовать OAuth с использованием библиотеки, вам следует проверить пакет HTTP_OAuth pear Джеффа Ходсона из Digg [1], и на этом сайте есть множество хороших постов о дизайне базы данных для использования с Oauth [2].

Думаю, я не совсем понимаю ваш вопрос.Вы хотите создать API для своего веб-приложения или просто предоставить способ защиты ресурсов пользователя?Если вы хотите создать API, вам обязательно следует использовать OAuth, а также использовать хорошо известную библиотеку.Это гарантирует, что:

  1. Другие разработчики будут знать, как использовать ваш API, потому что он соответствует OAuth RFC [3]
  2. Скорее всего, ваше веб-приложение будет безопаснее
  3. Вы узнаете о передовых практиках и узнаете некоторые новые вещи

Если вы не хотите создавать API и просто хотите защитить пользовательские ресурсы, я думаю, вы были бы в безопасностииспользуя сеансы [4], и, если пользователь не вошел в систему, он не сможет получить доступ к защищенным ресурсам.

[1] Пакет HTTP_OAuth: http://pear.php.net/pepr/pepr-proposal-show.php?id=607
[2] Проект базы данных Oauth: Какова рекомендуемая структура базы данных для провайдера OAuth [3] Oauth RFC: http://oauth.net/[4] PHP-сессии: http://us2.php.net/manual/en/features.sessions.php

0 голосов
/ 15 декабря 2011

Я использую session_regenerate_id для генерации токена, прежде чем я использовал session_id, но я выяснил, что при использовании session_id sessID никогда не менял значение, затем его регенерирование было решением, которое мне подходит,

Теперь я даже могу контролировать, есть ли один и тот же пользователь, но с другим sessID, и дать возможность LogOut сеансов одного пользователя.

Я не знаю, является ли это именно тем, что вы ищете, но это решает мою проблему с TOKEN.И это никогда не повторится.

Ссылка: https://www.php.net/manual/en/function.session-regenerate-id.php

...