Я считаю, что веб-безопасность — очень интересная тема, и я пытаюсь научиться создавать API-интерфейсы и веб-службы RESTful. я читал этот ответ и просто есть некоторые вопросы к процессу, описанному в Путь-2. Я понимаю суть Пути-2, но у меня начинаются вопросы на Шаге 4.
Сначала давайте опишем переменную токена.
$token = '123';
$tokenHashed = 'abc';
$tokenEncrypted = 'xyz';
На шаге 4 мы проверили пользователя, и теперь пришло время создать токен и связать его с этим пользователем в базе данных, а также отправить его клиенту. Вот вопросы, которые у меня есть об этом процессе:
Я думаю, что это касается всего шага 4, поэтому давайте перейдем к шагу 5. Одна вещь, которая касается меня в отношении шага 5, заключается в том, что он говорит: «Затем вызывающий абонент отправляет этот токен аутентификации …» НИКОГДА передайте токен, так что давай еще вопросы (предположим, что клиент хранит токен в любом порядке, ответьте 2 выше):
Отправляет ли клиент токен «hashed (abc)», «encrypted (xyz)» или «none (123)»?
Если они просто отправляют его обратно, как мы его отправили, то какой в этом смысл? Если кто-то похитит токен в какой бы форме мы его не отправили, не будет ли он всегда соответствовать тому, как мы его хранили? Например, я отправляю пользователю USER X случайную хешированную строку (abc). ПОЛЬЗОВАТЕЛЬ Y перехватывает его и отправляет мне (abc). Моя БД говорит «abc», сбой безопасности.
Я, вероятно, буду продолжать разрабатывать / добавлять вопросы по мере поступления ответов. Спасибо за вашу помощь!
JWT Это своего рода решение, REST API предназначены для сохранения состояния. Это означает, что каждый запрос от клиента должен включать всю информацию, необходимую для обработки запроса, поэтому сеанс php неуместен. Вы можете прочитать это,До свидания PHP сессий, Привет JSON Web токены
Вам не нужно сохранять токен JWT в вашей базе данных, вам просто нужно сгенерировать токен с секретным ключом на стороне сервера и отправить клиенту, и клиент должен отправлять токен при каждом запросе.
Браузер может сохранить токен в html5 localStorage или, возможно, в файле cookie.
Сервер разрешает зашифрованный токен с помощью секретного ключа, а затем получает информацию из токена.
Может быть, вы можете оставить какое-то сообщение в токене JWT, например:
Других решений пока нет …