Предупреждение системы безопасности CA2100 в запросе выбора Excel OleDb

У нас есть блок кода, который считывает содержимое первого листа в файле Excel в DataTable. Мы знаем, что данные на первом листе представлены в табличной форме, так что проблем нет.

Наша среда разработки: VS 12, C#.

Соответствующая строка кода выглядит следующим образом:

OleDbCommand objCmdSelect =
    new OleDbCommand("SELECT * FROM [" + sheetName + "]", objConn);

где переменная sheetName — это имя первого листа. objConn — это объект подключения.

Однако эта строка выдает предупреждение CA2100 «Проверить SQL-запросы на наличие уязвимостей безопасности» в анализе кода из-за нашей конкатенации строк. Насколько я знаю, имена таблиц не могут быть параметризованы. Решения, которые я придумал:

1) Переключитесь на библиотеку Microsoft Excel. Но это медленнее (не так ли?).

2) Подавить предупреждение. Не хочу на самом деле.

Есть ли лучшее решение или лучшая практика для этого сценария?


person Kemal Taşkın    schedule 30.09.2014    source источник
comment
Может ли sheetName быть введено потенциально злонамеренным пользователем? Если нет, то просто отключите предупреждение.   -  person juharr    schedule 30.09.2014


Ответы (1)


Убедитесь, что имя листа на самом деле является именем листа, и оно либо правильно экранировано, либо не содержит специальных символов. Затем просто отключите предупреждение.

person fejesjoco    schedule 30.09.2014
comment
Спасибо за ваш ответ. Я знаю, что это не угроза безопасности. Я просто хотел найти способ побороть CA2100 без подавления. - person Kemal Taşkın; 01.10.2014