4

Asp.net Web API プロジェクトがあります。

プロジェクトは、という名前のパラメーターを受け取ることによって、すべての要求を検証します。sessionToken

http://myapi.com/api/applications/getApplications?sessionToken=xxx

ただし、パブリック URL を介して機密性の高いパラメーターを送信するのは安全ではないと聞いたので、リクエストのヘッダー内にパラメーターを追加できる例を見てきました。sessionTokenHttpClient

using (HttpClient client = new HttpClient())
{
    client.BaseAddress = new Uri("http://myapi.com/");
    client.DefaultRequestHeaders.Add("sessionToken", "xxx");

    HttpResponseMessage response = await client.GetAsync("api/applications/getApplications");
    string stringResponse = await response.Content.ReadAsStringAsync();
}

URLに入力しなくてもパラメーターを読み取れるようになったことを嬉しく思います。

http 要求ヘッダーを介して機密データを送信しても安全ですか? (もちろん、少なくとも暗号化されます)

4

2 に答える 2

2

Url に機密情報を配置することはお勧めできません。情報漏えいにつながる可能性があります。

ヘッダーに入れることをお勧めします。さらにいくつかの提案があります:

  • カスタム ヘッダーの代わりにAuthorizeヘッダーを使用します。Authorize ヘッダーは、認証目的で設計されています。独自のスキームを定義するか、すべての車輪を再発明する代わりに、OAuth 2.0 で定義されたベアラーのような既存のスキームを使用できます。

  • クライアントは常に TLS を使用してMITM攻撃から保護する必要があります

  • クライアントは、 DNS ハイジャック攻撃を回避するために、要求を行うときに常に証明書チェーンを確認する必要があります

  • リプレイ攻撃を避けるために、トークンの有効期限を短命に設定する

  • クライアント コードが、他のユーザーがアクセスできる安全でない場所にトークンを保存しないようにしてください。

于 2013-04-29T22:25:36.797 に答える
1

接続が暗号化されていない限り、機密情報を URL やヘッダーで送信することはお勧めできません。セキュリティで保護されていない http 経由で送信したい場合は、データを暗号化できる公開/秘密鍵暗号化の一部を使用してください。URLに短いスパン(たとえば2分)で有効な暗号化されたデータが含まれるアプリケーションを構築しました。

于 2013-04-29T22:35:34.307 に答える