私たちは、RESTfulAPIを介してサービスを公開するサービスプロバイダーと提携しています。
ユーザー名とパスワードをURLパラメーターとして渡すことで、APIで認証できます。
例:https://example.com/api/service.json?api_user=Username&api_key=Password
私はこれがSSLを使用していることを知っています。ただし、ユーザー名とパスワードはURLの一部であるため、第三者に傍受されることはありませんか?
いいえ、サードパーティは宛先(example.com)しか見ることができません。残りのURLは、実際にはリクエスト内に埋め込まれています。
HTTP(またはHTTPS)要求がどのように行われるかを理解するのに役立ちます。
次のような新しい接続でサーバーにリクエストを発行します
GET /api/service.json?api_user=Username&api_key=Password
実際のリクエストは暗号化されたデータストリームの一部であるため、接続を監視している誰かが機密情報を抽出する方法はありません。
前の答えは両方とも技術的に正しいです。HTTPSを使用している場合、URLとクエリ文字列データは送信前に暗号化され、安全であると見なすことができます。
ただし、APIがクエリ文字列パラメータとしてユーザー名とパスワードを要求しているという事実は、セキュリティへのアプローチがやや緩いことを示している可能性があります。
たとえば、多くのウェブサーバーはデフォルトでリクエストクエリ文字列パラメータをログに記録します。これは、プレーンテキストのクレデンシャルがディスク上のどこかにある可能性があることを意味します(多くの企業はウェブサーバーのログを安全でない方法で保存またはバックアップします)。
つまり、クレデンシャルをクエリ文字列パラメータとして渡すこと自体はセキュリティリスクではありませんが、一般的には悪い習慣であり、より大きなセキュリティ問題の兆候である可能性があります。
ただし、ユーザー名とパスワードはURLの一部であるため、第三者に傍受されることはありませんか?
URLも暗号化されて送信されます。つまり、チャネルを保護するプロセスは、URLがサーバーに送信される前に発生します。
あなたは安全です。