6

私たちは、RESTfulAPIを介してサービスを公開するサービスプロバイダーと提携しています。

ユーザー名とパスワードをURLパラメーターとして渡すことで、APIで認証できます。

例:https://example.com/api/service.json?api_user=Username&api_key=Password

私はこれがSSLを使用していることを知っています。ただし、ユーザー名とパスワードはURLの一部であるため、第三者に傍受されることはありませんか?

4

3 に答える 3

7

いいえ、サードパーティは宛先(example.com)しか見ることができません。残りのURLは、実際にはリクエスト内に埋め込まれています。

HTTP(またはHTTPS)要求がどのように行われるかを理解するのに役立ちます。

  1. プロトコルを決定します(この場合はHTTPS、ポート443を使用)
  2. DNSを使用してサーバーのIPアドレスを取得する
  3. サーバーへのTCP接続を確立します(SSLが関係している場合は、もう少し複雑です)
  4. 次のような新しい接続でサーバーにリクエストを発行します

    GET /api/service.json?api_user=Username&api_key=Password

実際のリクエストは暗号化されたデータストリームの一部であるため、接続を監視している誰かが機密情報を抽出する方法はありません。

于 2013-02-07T18:40:30.590 に答える
6

前の答えは両方とも技術的に正しいです。HTTPSを使用している場合、URLとクエリ文字列データは送信前に暗号化され、安全であると見なすことができます。

ただし、APIがクエリ文字列パラメータとしてユーザー名とパスワードを要求しているという事実は、セキュリティへのアプローチがやや緩いことを示している可能性があります。

たとえば、多くのウェブサーバーはデフォルトでリクエストクエリ文字列パラメータをログに記録します。これは、プレーンテキストのクレデンシャルがディスク上のどこかにある可能性があることを意味します(多くの企業はウェブサーバーのログを安全でない方法で保存またはバックアップします)。

つまり、クレデンシャルをクエリ文字列パラメータとして渡すこと自体はセキュリティリスクではありませんが、一般的には悪い習慣であり、より大きなセキュリティ問題の兆候である可能性があります。

于 2013-02-07T22:02:09.707 に答える
5

ただし、ユーザー名とパスワードはURLの一部であるため、第三者に傍受されることはありませんか?

URLも暗号化されて送信されます。つまり、チャネルを保護するプロセスは、URLがサーバーに送信される前に発生します。

あなたは安全です。

于 2013-02-07T19:11:24.103 に答える