Why this matters
Using unsanitized user input in SQL queries can lead to SQL injection attacks. Use parameterized queries to protect against malicious inputs.
Using unsanitized user input in SQL queries can lead to SQL injection attacks. Use parameterized queries to protect against malicious inputs.
Using unsanitized user input in SQL queries can lead to SQL injection attacks. Use parameterized queries to protect against malicious inputs.
Side-by-side examples engineers can pattern-match during review.
public class ExampleController : Controller
{
private readonly UserAccountContext Context;
public IActionResult Authenticate(string user, string pass)
{
var query = "SELECT * FROM users WHERE user = '" + user + "' AND pass = '" + pass + "'";
var queryResults = Context
.Database
.FromSqlRaw(query);
if (queryResults == 0)
{
return Unauthorized();
}
return Ok();
}
}public class ExampleController : Controller
{
private readonly UserAccountContext Context;
public IActionResult Authenticate(string user, string pass)
{
var query = "SELECT * FROM users WHERE user = {0} AND pass = {1}";
var queryResults = Context
.Database
.FromSqlRaw(query, user, pass);
if (queryResults == 0)
{
return Unauthorized();
}
return Ok();
}
}public class ExampleController : Controller
{
private readonly UserAccountContext Context;
public IActionResult Authenticate(string user, string pass)
{
var query = "SELECT * FROM users WHERE user = '" + user + "' AND pass = '" + pass + "'";
var queryResults = Context
.Database
.FromSqlRaw(query);
if (queryResults == 0)
{
return Unauthorized();
}
return Ok();
}
}public class ExampleController : Controller
{
private readonly UserAccountContext Context;
public IActionResult Authenticate(string user, string pass)
{
var query = "SELECT * FROM users WHERE user = {0} AND pass = {1}";
var queryResults = Context
.Database
.FromSqlRaw(query, user, pass);
if (queryResults == 0)
{
return Unauthorized();
}
return Ok();
}
}From the same buckets as this rule.