Нужно ли защищать мой API? - PullRequest
0 голосов
/ 15 марта 2012

Я работаю над сервисом API для моего сайта.Я много читал на эту тему, но не могу решить, какое из них будет лучшим для меня.

Мой API прост.Каждый пользователь получает ключ API для каждого приложения , которое подключается к моему сайту.Есть только 2 разных вызова atm:

  • send_data
  • get_data

get_data тихо безвредно, с send_data вы можете завершить новые записи на вашем миниприложение.Там могут возникнуть проблемы с безопасностью, хотя звонки ограничены.Ни одна из данных не будет полезна, если они попадут в чужие руки.Серверная сторона Я защищен для SQL инъекций и т. Д.

Звонки примерно такие: http://example.com/api/?call=send_data&data=DATAXYZ&api_key=KEY

Pro:

  • Это супер просто в использовании

Против:

  • Это небезопасно

Я читал много подобных вопросов здесь и в других местах, и OAuth появляется как возможный ответпочти на всех из них.Я знаю OAuth, и я думаю, что это то, что я хочу, чтобы мои пользователи могли легко использовать их, это слишком много.

Как объясняется в этой статье, не всегда нужно использовать авторизацию: http://blog.apigee.com/detail/do_you_need_api_keys_api_identity_vs._authorization/

Это все верно и для моего случая, или вы все равно порекомендуете аутентификацию с OAuth или без него?

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Не отправляйте ключ API в качестве параметра GET: он будет записан по крайней мере в истории браузера (и, возможно, также в прокси-сервере, если он есть), что не очень безопасно.Вместо этого отправьте.

Я не думаю, что это было бы небезопасно, на самом деле широко используемая базовая проверка подлинности отправляет имя пользователя и пароль в виде простого текста (в кодировке base64), и фактически при использованииВойдите в любой веб-сервис, которому вы отправляете пароль в виде простого текста.Конечно, это работает при условии, что связь между клиентом и сервером безопасна, поэтому вы, вероятно, захотите использовать HTTPS.

1 голос
/ 19 марта 2012

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

Чем я занимаюсь по-другому:
a) Для вызовов API используется идентификатор пользователя / логин плюс ключ API.
б) ключ API - это соленый хэш md5 пароля пользователя (вы можете добавить идентификатор пользователя и что-то еще в виде соли)
Это означает, что люди реже пытаются «угадать» ключ API, вы также можете легче увидеть, кто использует ваш API в ваших журналах (без поиска ключа API).
И пользователи могут изменить свой ключ API, изменив свой пароль, поэтому, если они думают, что учетные данные API могли быть утечки, они могут просто изменить его.

Относительно GET / POST: если ваши пользователи сами не используют API (например, включив его в свои инструменты / скрипты / код), то я бы использовал POST, как предложил serans.
Но POST имеет несколько недостатков, он не так прост в использовании. Это просто требует немного больше работы для реализации.
Поэтому я бы предложил GET и POST и просто добавил примечание о возможных проблемах безопасности.

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