Аутентификация RESTful — Вопросы о процессе

Я считаю, что веб-безопасность — очень интересная тема, и я пытаюсь научиться создавать API-интерфейсы и веб-службы RESTful. я читал этот ответ и просто есть некоторые вопросы к процессу, описанному в Путь-2. Я понимаю суть Пути-2, но у меня начинаются вопросы на Шаге 4.

Сначала давайте опишем переменную токена.

$token = '123';
$tokenHashed = 'abc';
$tokenEncrypted = 'xyz';

На шаге 4 мы проверили пользователя, и теперь пришло время создать токен и связать его с этим пользователем в базе данных, а также отправить его клиенту. Вот вопросы, которые у меня есть об этом процессе:

  1. Токен, который мы храним в базе данных: «hashed (abc)», «encrypted (xyz)» или «none (123)»?
  2. Когда мы отправляем его клиенту, отправляем ли мы его «hashed (abc)», «encrypted (xyz)» или «none (123)»?
  3. Где этот токен хранится на клиентском компьютере? Я использую PHP, поэтому будет ли он в $[‘SESSION’] или $[‘COOKIE’] переменная? Это имеет значение? Какой и почему?

Я думаю, что это касается всего шага 4, поэтому давайте перейдем к шагу 5. Одна вещь, которая касается меня в отношении шага 5, заключается в том, что он говорит: «Затем вызывающий абонент отправляет этот токен аутентификации …» НИКОГДА передайте токен, так что давай еще вопросы (предположим, что клиент хранит токен в любом порядке, ответьте 2 выше):

  1. Отправляет ли клиент токен «hashed (abc)», «encrypted (xyz)» или «none (123)»?

    Если они просто отправляют его обратно, как мы его отправили, то какой в ​​этом смысл? Если кто-то похитит токен в какой бы форме мы его не отправили, не будет ли он всегда соответствовать тому, как мы его хранили? Например, я отправляю пользователю USER X случайную хешированную строку (abc). ПОЛЬЗОВАТЕЛЬ Y перехватывает его и отправляет мне (abc). Моя БД говорит «abc», сбой безопасности.

Я, вероятно, буду продолжать разрабатывать / добавлять вопросы по мере поступления ответов. Спасибо за вашу помощь!

0

Решение

JWT Это своего рода решение, REST API предназначены для сохранения состояния. Это означает, что каждый запрос от клиента должен включать всю информацию, необходимую для обработки запроса, поэтому сеанс php неуместен. Вы можете прочитать это,До свидания PHP сессий, Привет JSON Web токены

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

Браузер может сохранить токен в html5 localStorage или, возможно, в файле cookie.

Сервер разрешает зашифрованный токен с помощью секретного ключа, а затем получает информацию из токена.

Может быть, вы можете оставить какое-то сообщение в токене JWT, например:

  1. Истекает время.
  2. IP-адрес клиента
  3. тип.
  4. … пользовательское сообщение.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]