Я допускаю, что реализация S3649 не самая умная, она вызовет проблемы, если вы передадите непостоянную строку в свойство CommandText
SqlCommand
или соответствующий аргумент ctor.
Если вы уверены, что значение CommandText
не исходит из потенциально эксплуатируемого источника, например, параметра строки запроса, лучший способ справиться с этой конкретной проблемой - пометить его как Won't Fix
в SonarQube.Если вы также используете SonarLint в подключенном режиме для этого проекта, он автоматически исключит появление проблемы в IDE.
С другой стороны, если значение может быть получено из пригодного для использования источника, такого как запросстроковый параметр, тело запроса, cookie, заголовок и т. д. настройки CommandType = StoredProcedure
все еще может быть недостаточно, чтобы предотвратить выполнение злоумышленником другой хранимой процедуры в вашей базе данных, чем вы предполагали ... В таком случае, возможно, будет лучше, есливы создаете отдельные методы-оболочки для хранимых процедур, которые у вас есть, тем самым не позволяя потенциальным злоумышленникам выбрать другой SP для выполнения.