TSQL Предотвращение внедрения SQL в SPROC с предложением WHERE в качестве параметра - PullRequest
0 голосов
/ 03 января 2011

В настоящее время я разрабатываю приложение, которое ДОЛЖНО выбрать несколько разных таблиц, результаты которых взаимосвязаны.Возвращаемые данные будут сохранены в объекте .NET DataSet в клиентском приложении.

Входные переменные хранимой процедуры должны быть предложением where оператора select.Это требование бизнес-логики, поскольку приложение должно разрешать такие расширенные поиски.

То, что я хотел сделать, это хранимая процедура (из-за необходимости возвращать более одной таблицы, которые связаны друг с другоми чьи результаты взаимозависимы), которые будут иметь предложения WHERE, которые будут добавлены к динамическому SQL, например:

create procedure up_test (
    @input varchar(255)
) as

    EXEC( 'SELECT * FROM person.person ' + @input)


go

1 Ответ

2 голосов
/ 03 января 2011

Если вход для SP должен быть предложением where для оператора select, то нет способа предотвратить инъекцию sql.

Одна из причин заключается в том, что он открывает двери для людей, закрывающихвыберите утверждение и затем напишите, что еще они хотят, обновляют, удаляют, вы называете это.

...