2016-04-07 3 views
0

Я создал сервер API, используя Flask, где пользователь предоставил (через обычный веб-интерфейс) персональный ключ API. И тогда все запросы, отправленные на мой сервер, должны предоставить этот ключ (в заголовке или как параметр get/post, это не имеет значения). На данный момент сервер работает через HTTP (не HTTPS).Безопасно ли использование ключа API?

Но мне интересно, безопасно ли оно? Если кто-то, использующий wirehark или любой другой сниффер трафика, получит этот адрес, тогда он может отправлять запросы на мой API в качестве первоначального владельца.

Я рассмотрел несколько предоставленных ресурсов API с использованием apikey и обнаружил, что многие из них используют схему HTTP. Если я только верну HTTPS и заставляю клиентов использовать HTTPS, было бы достаточно защитить мое приложение от злонамеренных лиц?

ответ

2

HTTPS должно быть достаточным для обеспечения передачи данных по сети.

Если вы все еще хотите поддерживать HTTP, вы можете реализовать Limiting и Token-Expiry в своем API.

Ограничение позволяет ограничить количество запросов, которые пользователь API может отправить в определенный таймфрейм.

С помощью Token-Expiry ключ API пользователя истекает через некоторое время, и они больше не могут его использовать. Это означает, что вам нужно будет обновить токены в своих кодах.

Отметьте это PyCon 2014 presentation для улучшения реализации API. Найти Presentation source on GitHub

+0

Token-Expiry - интересный подход. Правильно ли, что в этом случае мне нужно реализовать дополнительную конечную точку, для exmaple, называемую «login», поэтому к этой конечной точке необходимо сначала получить имя пользователя/пароль и вернуть токен до предопределенного таймфрейма? В этом случае я должен подумать, как защитить передачу имени пользователя и пароля. –

+0

@ AlexG.P. Вы очень правы, токен, отправленный пользователю, должен быть зашифрованной/сериализованной строкой, содержащей информацию о пользователе, которую вы можете расшифровать, чтобы определить пользователя. Пожалуйста, примите мой ответ, если это поможет. – Adeola