2016-04-07 3 views
0

私はFlaskを使用してAPIサーバーを作成しました。ユーザーが(通常のWebインターフェイスを通じて)個人APIキーを提供しました。そして、私のサーバーに送られたすべてのリクエストは、このキーを提供しなければなりません(ヘッダーに/ get/postパラメーターとして、それは関係ありません)。今のところ、サーバーはHTTP(HTTPSではなく)で動作します。APIキーの使用が安全かどうか

しかし、私はそれが安全かどうか疑問に思っていますか? wiresharkやその他のトラフィックスニファを使用しているユーザーがこのアドレスを取得した場合、私はAPIに独自の所有者としてリクエストを送信できます。

apikeyを使用してAPIを提供したいくつかのリソースを見て、その多くがHTTPスキーマを使用していることがわかりました。 HTTPSのみをオンにしてクライアントにHTTPSを使用させると、悪意のある人物に対してアプリケーションを保護すれば十分でしょうか?

答えて

2

HTTPSは、ネットワークを介したデータの流れを確保するのに十分でなければなりません。

まだHTTPをサポートしたい場合は、APIに制限とトークンの有効期限を実装できます。

制限することで、APIユーザーが特定の期間内に送信できる要求の数を制限できます。

Token-Expiryでは、ユーザーのAPIキーがしばらくしてから有効になり、もう使用できなくなります。つまり、コードにトークンリフレッシュを実装する必要があります。

より良いAPI実装についてはPyCon 2014 presentationをご覧ください。 Find Presentation source on GitHub

+0

Token-Expiryは面白いアプローチです。この場合、「login」と呼ばれるexmapleの追加エンドポイントを実装する必要があるので、このエンドポイントに最初にusername/passでアクセスし、事前定義されたタイムフレームにトークンを戻す必要がありますか?この場合、過度のネットワークを通過するユーザー名/パスワードを保護する方法を考える必要があります。 –

+0

@ AlexG.P。あなたは非常に正しいです、ユーザーに送信されるトークンは、ユーザー情報を含む暗号化された/シリアル化された文字列でなければなりません。助けがあれば、私の答えを親切に受け入れてください。 – Adeola

関連する問題