Передача ключей API в заголовке или URL? - PullRequest
5 голосов
/ 07 марта 2012

Я заметил, что в некоторых API вы передаете ключ API в качестве параметра url, в то время как в других вы передаете его в HTTP HEADER. Я занимаюсь разработкой веб-приложения, которое в значительной степени будет опираться на REST API, и сейчас я просто использую его, чтобы API-ключ передавался в качестве параметра url.

У меня вопрос, является ли один из этих вариантов более безопасным, чем другой?

1 Ответ

6 голосов
/ 07 марта 2012

В обоих случаях ключ API будет передаваться в незашифрованном виде.Таким образом, оба являются небезопасными, если вы не используете HTTPS.

На практике заголовок HTTP оказывается немного более безопасным, потому что -

  1. URL-адрес сохраняется в истории браузера
  2. URL-адрес сохраняется в журналах доступа на стороне сервера.

В стороне: REST API через Интернет не может быть защищен, если вы не попросите пользователя войти в систему с его учетными данными.Любой может легко идентифицировать ключ API и отправлять запросы на ваш сервер.

РЕДАКТИРОВАТЬ: В ответ на комментарии @ segfault -

Пользователь веб-сайта обычно не вводит ключ API.Они вводят свои имя пользователя и пароль, и они продаются, чтобы получить ключ API или токен доступа, как это обычно называется.

Если вы заставляете своих пользователей вводить ключ API вместо имени пользователя и пароля, хорошоЭто было бы безопасно.Но, как я уже сказал, я не видел, чтобы какое-либо серьезное приложение делало это.

В частности, я имел в виду «Если бэкэнд-API ожидает ключ API, и вы делаете вызовы AJAX из браузера, а вы нене спрашивайте пользователя о каких-то учетных данных, вы не уверены "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...