Я пытаюсь создать инструмент тестирования, который позволит разработчику ввести запрос в файл конфигурации, и когда код вызывается из приложения, он просто запускает запрос и регистрирует то, что он находит. Файл конфигурации находится в безопасном месте с доверенными пользователями, но я все равно предпочел бы сеть безопасности. < /P>
Код выглядит так.
Код: Выделить всё
string Query = Configuration.GetConfig("TheQuery"); // pull the query from a configuration file
if (!IsQuerySafe(Query)) {
// basic tests (does it contain any of the words delete, update, etc.)
Logger.Warning("Query doesn't appear to be safe. Not running it.");
return;
}
using(SqlCommand Cmd = new SqlCommand(Query, MyConnection)) {
using(SqlDataReader Reader = Cmd.ExecuteReader()) {
//... log the results
}
}
< /code>
Есть ли способ определить, действительно ли запрос безопасным? Мой текущий метод iSquerySafe (String)
будет создавать ложные негативы, если имя столбца содержит слово Delete , например, deleted_date , но я бы предпочел быть чрезмерным. /> У меня была идея обернуть запрос, например, Query = "Выберите a.* from (" + Query + ") a"; Но это не будет работать с предложением по заказу . Что -то вроде SQLSelectCommand (запрос, MyConnection) было бы оптимальным. Или существует существующая библиотека, которая может выполнять работу по проверке?
Подробнее здесь:
https://stackoverflow.com/questions/796 ... afe-origin