错误的类比较¶
ID: cs/class-name-comparison
Kind: problem
Security severity:
Severity: warning
Precision: medium
Tags:
- reliability
- correctness
- external/cwe/cwe-486
Query suites:
- csharp-security-and-quality.qls
根据对象的类型名称检查其类型不适用于未来的更改,并且可能允许攻击者注入恶意类。
建议¶
实现对对象类型的检查,该检查不应仅仅基于其类名。
示例¶
在此示例中,帐户类型的检查完全基于类名,并且不可靠。
更恰当的做法是像这样检查 account
的类型
class ErroneousClassCompareFix
{
public static void ApproveTransaction(object account, Transaction transaction)
{
if (account.GetType() == typeof(Trusted.Bank.Account))
{
transaction.Process();
}
}
}