SQL Injection Tainted Input
Untrusted request input flows into an ADO.NET command or an EF Core raw-SQL call executed as a dynamic query string, enabling SQL injection (CWE-89).
Standards mapping
- OWASP Top 10
- A03:2021 - Injection
- OWASP ASVS
- V5.3.4 (L1)
Vulnerable vs. safe
cmd.CommandText = name;var cmd = new SqlCommand("SELECT * FROM Users WHERE Id = @id");Why it matters & how to fix it
Untrusted request input flows into an ADO.NET command or an EF Core raw-SQL call executed as a dynamic query string, enabling SQL injection (CWE-89). Use parameterized queries: add SqlParameter values with '@name' placeholders, or pass parameters to FromSqlRaw/ExecuteSqlRaw (or use FromSql interpolation, which parameterizes automatically). Never build SQL by concatenation.
References
Rule ID integsec.csharp.injection.sql-injection-taint - engine: Opengrep - license: MIT - Copyright (c) IntegSec Inc.
TurboPentest runs this check automatically
Connect a GitHub repo and this check runs on every white-box pentest - AI-validated and reported with proof, from $99 per target.
Start a pentestRelated checks
- JavaScript / TypeScript - InjectionCode Injection Tainted Input
- JavaScript / TypeScript - InjectionEval Dynamic Argument
- JavaScript / TypeScript - InjectionNoSQL Query From Request
- JavaScript / TypeScript - InjectionNoSQL Where Operator
- JavaScript / TypeScript - InjectionOS Command Injection Tainted Input
- JavaScript / TypeScript - InjectionSQL Injection String Concatenation