Задать вопрос
@Mishcake

Как зашифровать АПИ токен на стороне клиента?

Привет! В предыдущем вопросе спросил, можно ли непосредственно со страницы с формой отправлять АПИ-запросы и проверять какие-то условия.

Оказалось, что можно, но в запросе нужно обязательно передавать токен партнёра, без которого не будет ответа. Но с этим токеном можно сделать кучу всего в сервисе, с которым я связываюсь по АПИ и вставлять этот токен прям в код страницы мне как-то боязно.

Обращаюсь к АПИ посредством js и fetch.

P.S. Как альтернативу вижу хранить значение токена на внешнем хосте в php-скрипте, который будет проверять, с какого адреса будет приходить запрос и если он соответствует моему, то после отправит его в АПИ, потом вернёт обратно на страницу, где JS на основе ответа сделает что-то.

Или юзать base64_encode() и base64_decode() на сервере с php.

Как лучше поступить, подскажите, пожалуйста.
  • Вопрос задан
  • 765 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 4
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Не надо так делать. Стоит выбрать правильную авторизацию в API. Не знаю что у вас за система, но что мешает сделать обертку, в которую пускать пользователей по из персональным токенам или сессиям?
Ответ написан
Ninazu
@Ninazu
Ничего шифровать не нужно. Алгоритм такой
1. Берете https://github.com/Valve/fingerprintjs2
2. Отправляете результат его работы c каждым запросом
3. Авторизируетесь и получаете токен который на сервере привязан к fingerprint и IP
4. При получении запроса с токеном и fingerprint, проверяете наличие токена в своем хранилище, и соответсвие токена IP и fingerprint которые пришли с клиента
5. Если не прошла проверка, заставляйте авторизироваться снова.

P.S. IP часто динамический. Так что учитывайте это. Например много людей используют мобильный интернет. Плюс нужно понимать что может быть несколько устройств. Пользователь может зайти с планшета, телефона и ПК
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Не делайте так. В инструкциях четко написано серверный токен должен храниться на сервере, и желательно в защищенном хранилище.

Поэтому если нужно проводить какие то операции, делайте их на сервере, а результат отправляйте клиенту.
Вообще есть такая парадигма не доверяй клиенту, все данные у него и обмен с ним могут быть раскрыты.
Ответ написан
angrySCV
@angrySCV
machine learning, programming, startuping
дополнительно шифровать токен достаточно бессмысленная вещь - тк он уже представляет из себя зашифрованные данные.
Если требуется бОльшая безопасность у токена записывают короткое время жизни и требуют регулярно его обновлять (например каждый час), используя еще один токен)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 19:47
3000 руб./за проект
22 дек. 2024, в 19:03
60000 руб./за проект
22 дек. 2024, в 17:54
10000 руб./за проект