CA5376: SharedAccessProtocol HttpsOnly を使用します
プロパティ | 値 |
---|---|
ルール ID | CA5376 |
Title | SharedAccessProtocol HttpsOnly を使用します |
[カテゴリ] | Security |
修正が中断か中断なしであるか | なし |
.NET 9 では既定で有効 | いいえ |
原因
GetSharedAccessSignature
名前空間の下で Microsoft.WindowsAzure.Storage
メソッドを使用し、protocols
として HttpsOrHttp
を指定し、Shared Access Signature (SAS) を生成しています。
既定で、このルールではコードベース全体を分析しますが、これは構成可能です。
規則の説明
SAS は HTTP を介してプレーン テキストで転送できない機密データです。
違反の修正方法
SAS を生成するときに HttpsOnly
を使用します。
どのようなときに警告を抑制するか
この規則は抑制しないでください。
分析するコードを構成する
次のオプションを使用して、コードベースのどの部分に対してこのルールを実行するかを構成します。
これらのオプションは、このルールのみ、適用されるすべてのルール、または適用先のこのカテゴリ (セキュリティ) のすべてのルールに対して構成できます。 詳細については、「コード品質規則の構成オプション」を参照してください。
特定のシンボルを除外する
excluded_symbol_names オプションを設定することで、種類やメソッドなどの特定のシンボルを分析から除外できます。 たとえば、MyType
という名前の型のコードで規則を実行しないように指定するには、プロジェクトの .editorconfig ファイルに次のキーと値のペアを追加します。
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType
メモ
CAXXXX
の XXXX
部分を該当するルールの ID に置き換えます。
オプションの値で使用できるシンボル名の形式 (|
で区切ります):
- シンボル名のみ (包含する型または名前空間に関係なく、その名前が指定されたすべてのシンボルが含まれます)。
- そのシンボルのドキュメント ID 形式の完全修飾名。 各シンボル名には、メソッドには
M:
、型にはT:
、名前空間にはN:
のように、シンボルの種類のプレフィックスが必要です。 - コンストラクターには
.ctor
、静的コンストラクターには.cctor
。
例 :
オプション値 | まとめ |
---|---|
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType |
MyType という名前のすべてのシンボルを検索します。 |
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType1|MyType2 |
MyType1 または MyType2 という名前のすべてのシンボルを検索します。 |
dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS.MyType.MyMethod(ParamType) |
指定された完全修飾シグネチャを持つ特定のメソッド MyMethod を検索します。 |
dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS1.MyType1.MyMethod1(ParamType)|M:NS2.MyType2.MyMethod2(ParamType) |
それぞれの完全修飾シグネチャを持つ特定のメソッド MyMethod1 または MyMethod2 を検索します。 |
特定の型とその派生型を除外する
excluded_type_names_with_derived_types オプションを設定することで、特定の型とその派生型を分析から除外できます。 たとえば、MyType
という名前の型のメソッドとその派生型で規則を実行しないように指定するには、プロジェクトの .editorconfig ファイルに次のキーと値のペアを追加します。
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType
メモ
CAXXXX
の XXXX
部分を該当するルールの ID に置き換えます。
オプションの値で使用できるシンボル名の形式 (|
で区切ります):
- 型の名前のみ (包含する型または名前空間に関係なく、その名前が指定されたすべての型が含まれます)。
- そのシンボルのドキュメント ID 形式の完全修飾名 (オプションで
T:
プレフィックスも使用可)。
例 :
オプション値 | まとめ |
---|---|
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType |
MyType という名前のすべての型と、そのすべての派生型を検索します。 |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType1|MyType2 |
MyType1 または MyType2 という名前のすべての型と、そのすべての派生型を検索します。 |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS.MyType |
指定された完全修飾名を持つ特定の型 MyType と、そのすべての派生型を検索します。 |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS1.MyType1|M:NS2.MyType2 |
それぞれの完全修飾名を持つ特定の型 MyType1 または MyType2 と、そのすべての派生型を検索します。 |
疑似コードの例
違反
現在のところ、次の擬似コード サンプルでは、この規則により検出されたパターンを示しています。
using System;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.File;
class ExampleClass
{
public void ExampleMethod(SharedAccessFilePolicy policy, SharedAccessFileHeaders headers, string groupPolicyIdentifier, IPAddressOrRange ipAddressOrRange)
{
CloudFile cloudFile = new CloudFile(null);
SharedAccessProtocol protocols = SharedAccessProtocol.HttpsOrHttp;
cloudFile.GetSharedAccessSignature(policy, headers, groupPolicyIdentifier, protocols, ipAddressOrRange);
}
}
解決策
using System;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.File;
class ExampleClass
{
public void ExampleMethod(SharedAccessFilePolicy policy, SharedAccessFileHeaders headers, string groupPolicyIdentifier, IPAddressOrRange ipAddressOrRange)
{
CloudFile cloudFile = new CloudFile(null);
SharedAccessProtocol protocols = SharedAccessProtocol.HttpsOnly;
cloudFile.GetSharedAccessSignature(policy, headers, groupPolicyIdentifier, protocols, ipAddressOrRange);
}
}
関連規則
.NET