0

Web サービスの API を読んでいますが、すべてのメソッドで HTTP リクエストを送信する必要があります。

https://example.com/api/APIVER/METHOD?apikey=APIKEY&user=USERNAME&password=PASSWORD

明確にするために、API キーとユーザー パスワードの両方が URL 経由でプレーン テキストで送信されます。しかし、これは「すべての HTTPS トラフィックが暗号化されている」ためでしょうか、それともまだプレーン テキストのままであるか、URL が何らかの形で異なるためではないのでしょうか?

これが安全でない場合、API メンテナーが行う必要がある最小限の変更は何ですか?

4

3 に答える 3

1

HTTPS を使用すると、これがより安全になります。

また、GET クエリ文字列の代わりに (HTTP BODY) POST パラメーターとして機密パラメーターを送信する必要があります。通常、クエリ文字列は Web サーバー ログ (サーバー側) によって平文でログに記録されるため、システム管理者がアクセスできて、おそらくそれを見ることができないはずです。

于 2012-04-17T14:53:27.767 に答える
1

はい、HTTPS はこれをより安全にします。

于 2012-04-16T21:01:50.177 に答える
0

HTTPS は各リクエストで URL をエンコードするため、ネットワーク スニッフィングが心配な場合でも問題ありません。HTTPS は nonce 値も追加するため、応答攻撃にさらされることはありません。

インフラストラクチャによっては、ユーザー デバイスによって信頼されている偽の SSL 証明書を挿入し、その証明書を使用してプロキシ経由で要求をルーティングすることが可能です。ただし、これにはクライアント マシンへの管理者/ルート アクセスが必要であり、そのような証明書を信頼できるようにする必要があります (通常は信頼できる CA の侵害を禁止します)。

これはまだ素晴らしいアイデアではありませんが、開発者が HTTPS 用に構成するのを忘れているのではないかと心配しています。API キーがあるので、パスワードを取得し、APIKEY をソルトとして使用してハッシュしてみませんか。API 呼び出しの場合、salt はパスワードに相当しますが、ユーザー名とパスワードは、API が実行されている Web サイトなど、それらの資格情報を使用して他の場所にログインするために使用できないことを意味します (ユーザーにログを許可すると仮定します)。もちろん入っています。)

ネットワークをまったく通過しない共有シークレットを使用し、それをソルトとして使用することをお勧めします。

于 2012-04-16T22:14:07.557 に答える