asp.Netcoreパラメータ保護

3430 ワード

asp.Netcoreパラメータ保護


Intro


asp.Netcore data protection拡張、IDataProtector拡張データ保護コンポーネントに基づいて、いくつかのパラメータの保護を自動化

ParamsProtection

ParamsProtectionはaspを保護するためである.Netcore webapiプロジェクトのいくつかのパラメータで設計され、ある程度の反爬虫類にも使用できます.

GetStarted


nugetパッケージをインストールします.DataProtection
サンプル・アイテムによる詳細の表示
services.AddDataProtection()
            .AddParamsProtection(options =>
            {
                options.ProtectParams = new[]
                {
                    "id"
                };
            });

サンプルアイテムを走ると、sampleプロジェクトの下でdotnet runコマンドを直接実行し、ブラウザで/api/valuesパスにアクセスすることができます.次のような応答結果が得られます.
[
  {
    "id": "CfDJ8MvS3iyCJCJCrNda10tFrJu_HXavFbumMGxov9ly0XkFRG6O-HxgLwoqTnc4GQ27Zpby4kNOZBNlNK-1ctAWfuuBkkfoG96szEHXixZvUl6b2JlV1yt1MVUq5MHSOeYOGw",
    "val": "value1"
  },
  {
    "id": "CfDJ8MvS3iyCJCJCrNda10tFrJv9haZxFcv9bx2V3ZUKAMxGVD5aQzdzHfqB3XPfpZvQfzPHqxacA2i--hVnXAqzIBJ9ytQ72alekFFqzSFHjZwOTVwr4SMwOlfqm1zkMqFSUg",
    "val": "value2"
  }
]

元の業務コードには何もする必要はありません.やはり元の内容に戻るだけでいいです.元の戻り内容は以下の通りです.
return Ok(new[] {
            new
            {
                id = 1,
                val = "value1"
            },
            new
            {
                id =2,
                val ="value2"
            } });

起動時にidパラメータが設定されているので、/api/values/{id}というアドレスにアクセスするときにAllowUnprotectedParamstrueに設定されていなければ、元のintタイプのidをそのまま使用してアクセスすると4 xx(デフォルトは412)ステータスコードの応答が得られ、/api/valuesから返されたidの値でアクセスすると正常に応答が得られます.
それ以外に、保護された値の期限切れを設定することができます.比較的短い期限切れを設定することで、ある程度の反爬虫類を設定することができます.あまり友好的ではないところは、プログラム上のユーザーの健康診断に影響を与える可能性があります.ユーザーがページを開けて長い間操作していないと、いくつかの操作が失敗する可能性があります.ユーザーの再操作が必要です.
また、POSTまたはPUTリクエストで保護された値を使用することもできます.保護された値が期限切れになった場合、サービスから4 xx(デフォルト412)の応答が得られます.

More


使用に適したパラメータを設定できます
/// 
/// ProtectorPurpose
/// 
public string ProtectorPurpose { get; set; } = "ParamsProtection";

/// 
/// ExpiresIn, minutes
/// 
public int? ExpiresIn { get; set; }

/// 
/// Enabled for paramsProtection
/// 
public bool Enabled { get; set; } = true;

/// 
/// Allow unprotected params
/// 
public bool AllowUnprotectedParams { get; set; }

/// 
/// Invalid request response http status code
/// refer to https://restfulapi.net/http-status-codes/
/// 
public int InvalidRequestStatusCode { get; set; } = 412;

/// 
/// the params to protect
/// 
public string[] ProtectParams { get;set; }

パラメータ保護モードを変更するには、いくつかの値を変更します.
  • パラメータ保護
  • を無効にするためにEnabledfalseに設定.
  • ProtectorPurposeの値を変更してDataProtectorのpurpose
  • を変更する.
  • は、AllowUnprotectedParamstrueに設定し、元のパラメータへのアクセスを可能にする
  • である.
  • InvalidRequestStatusCodeの値を設定、不正なパラメータアクセス時に応答するStatus Code
  • を変更する.
  • ExpiresInの値を変更して、保護パラメータの値の有効期限
  • を変更する.
  • パラメータ保護を行うパラメータ名
  • を指定するためにProtectParamsの値を設定する.

    Contact


    Contact me: [email protected]