ivanvorobei
@ivanvorobei
iOS разработчик, канал https://t.me/sparrowcode

Как защитить REST API от невалидных запросов?

Имею:
  • Rest API на Lumen
  • Соединение по httpS
  • Basic авторизацию: Отправляется в хедаре login+password, в ответ приходит JWT c acsess_token (для каждого запроса с малым временем жизни) и refresh_token (для получения нового acsess_token)


Необходимо:
Реализовать архитектуру валидации запроса. Т.е. чтобы знать что запрос пришел именно от "своего" клиента (под клиентом я подразумеваю мобильное приложение). Чтобы ручками в браузере школьники не могли посылать запросы) Получается запрос от клиента должен быть идетицифирован по двум пунктам:
  1. Запрос пришел от валидного клиента
  2. Запрос пришел от валидного пользователя


Можно было...:
Идея была сделать два заголовка в хедаре, и передавать в них два токена: один выдан клиенту, второй выдан пользователю. Но два нельзя, а в url передавать - костыль.
UPD: Можно и два заголовка, распарсить их не проблема. Но нормальное ли это решение?
b2542ce1c12d49a2ae78cf3c4a587a0b.png

Итог:
Как сделать без костылей валидацию клиента?
  • Вопрос задан
  • 782 просмотра
Решения вопроса 1
@xfg
Все что выполняется на стороне клиента, можно разобрать и вытащить секретную информацию. Поэтому любое приложение работающее на стороне клиента по определению является небезопасным и авторизовывать его нет смысла. Это можно будет подделать.

То, что вы хотите можно сделать только с клиентами работающими на стороне сервера.

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

Это так не работает. Нужно выбирать из двух:
1. Публичный API -> Публичный клиент (выполняется на клиенте).
2. Закрытй API -> Закрытый клиент (выполняется на сервере).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Airat1995
Студент
Возможно использовать IMEI телефона для того, чтобы проверять телефон ли это. Вот здесь есть база IMEI'ов и API к нему www.imei.info/api/imei/docs Однако существуют программы для замены IMEI, а также для его генерации.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы