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

Как сделать секретный ключ API?

Исходные данные:
API доступно только зарегистрированным пользователям.
После регистрации юзеру выдаётся id и секретный ключ на основе хэша каких-то данных.
Юзер должен сохранить ключ в тайне и не сообщать его третьим лицам, т.к. при каждом запросе со счёта списывается денежка.

Вопрос: есть ли необходимость ограничивать метод отправки ключа (например не принимать GET-запросы а отдавать только при POST-запросах)?
Или же для безопасности ограничить домен с которого могут идти запросы (можно обойти)?
Или делать двухступенчатый API как в ВК когда запрос с открытым id идёт на один адрес, а ответ приходит на другой заранее заданный в системе и с этого второго адреса уже посылается секретный ключ?

Или на всё забить и сделать по простому а юзер пусть сам бдит свой ключ?
  • Вопрос задан
  • 1223 просмотра
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
DBA для вашего PostgreSQL?
Сделайте ограничение по IP. С возможностью указать несколько сетей. Просто, стандартно, привычно.
Для прозрачности - давайте подробный лог, мол по вашему ключу было столько-то таких-то запросов с такого IP-адреса. По идее градации день-IP-запрошенное действие-количество запросов будет достаточно чтобы и лог не раздувать сверх меры и давать подробную статистику пользователю. Если токенов может быть несколько - то дополнительно по токену счётчик
Не забудьте дать пользователю кнопку "ааа, срочно инвалидируйте мой токен!"
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Imho программа минимум:
а) принудительно использовать https
b) передавать запрос в теле POST, а не в url.
c) не передавать секретный ключ, а передавать хеш от (данные запроса + секретный ключ).
Все остальное опционально по желанию.
Ответ написан
Ваш ответ на вопрос

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

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