アプリケーションプログラミングインターフェース(API)キーは、ユーザー、開発者、または呼び出しプログラムをAPIに対して認証および認可するために使用される秘密の一意の識別子です。[ 1 ] [ 2 ]
Google Cloud PlatformやAmazon Web Servicesなどのクラウドコンピューティングプロバイダーは、APIキーは人間のユーザーではなく、プロジェクトの認証にのみ使用することを推奨しています。[ 3 ] [ 4 ]
HTTPベースの APIの API キーは、複数の方法で送信できます。[ 5 ]
アクセストークンは、多くの場合、 HTTP Authorizationヘッダー内のJSON Web Token (JWT)です。
POST /something HTTP / 1.1 Authorization : Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...クエリ文字列内:
POST /something?api_key=abcdef12345 HTTP / 1.1リクエストヘッダー として:
GET /something HTTP / 1.1 X-API-Key : abcdef12345クッキー として:
GET /something HTTP / 1.1 Cookie : X-API-KEY=abcdef12345API キーは一般的に安全とはみなされていません。通常、クライアントがアクセスできるため、API キーを盗むのは容易です。キーには有効期限がないことが多く、盗まれたキーは取り消しまたは再生成されない限り無期限に使用できます。[ 6 ]キーはクライアントとサーバーのみが知っている秘密であるべきなので、安全でないチャネルを介して通信すべきではなく、 HTTPSなどの他のセキュリティ メカニズムと組み合わせて使用する場合にのみ安全とみなされます。[ 5 ]
APIキーを使用する際には、いくつかのリスクシナリオが考えられます。
これらのリスクは一般的に、鍵が平文で保存されているため、攻撃者がアクセスできる可能性があることに起因します。[ 2 ]
2017年、デラウェア州に拠点を置くセキュリティ企業Fallibleは、16,000個のAndroidアプリを調査し、 Dropbox、Twitter、SlackなどのサービスのハードコードされたAPIキーを含む300個以上のアプリを特定しました。[ 7 ]
{{cite conference}}: CS1 maint: 数値名: 著者リスト (リンク)