Попытка обнаружить уязвимости с фронта может помочь, но на самом деле вы должны смотреть на код, в частности на весь код, связанный с DbCommand, SqlCommand и т. Д. Ключевой момент, как вы четкоЗнаете, никогда не объединять пользовательский ввод в запрос, а параметризировать его.Существуют хорошие инструменты, которые могут упростить эту параметризацию или, по крайней мере, сделать ее проще, чем делать это вручную.Например, если у вас есть:
using(var cmd = conn.CreateCommand()) {
cmd.CommandText = "delete from Orders where id = " + id;
cmd.ExecuteNonQuery();
}
, то такой инструмент, как dapper-dot-net, позволит вам делать такие вещи:
conn.Execute("delete from Orders where id = @id", new {id});
, что на меньше код, в основном копируемый, но полностью безопасный для инъекций и допускающий повторное использование плана запросов.