2013-06-27 2 views
0

Если мне нужно вставить данные в таблицу, использование SqlParameter - лучший выбор. Но я слышал, что кто-то сказал, что SqlParameter все еще имеет некоторые недостатки в SQL-инъекции. Доказательство связывается с строкой sql и работает командой exec. В этом случае в SQL-инъекции все еще есть некоторые риски.Использование SqlParameter может полностью исключить инъекцию sql?

Но мой вопрос в том, что если я использую SqlParameter только для вставки данных в таблицу без команды exec, у меня все еще есть риски в SQL-инъекции?

+1

У вас может быть информация в этом разделе. Вопрос, похоже, тот же: http://stackoverflow.com/questions/306668/are-parameters-really-enough-to-prevent-sql-injections –

+0

как вы делитесь кодом, и я постараюсь добавить несколько SQL к нему –

ответ

1

Проблема с примером exec Вы используете два вопроса. Первый запрос строит строку 2-го sql с использованием конкретизации, затем выполняется второй запрос.

Пока вы не разделяете свою команду и свои каналы передачи данных (сохраняя запрос, который будет выполняться независимо от значения переменных, к которому будет выполняться запрос), вы не можете иметь SQL-инъекцию (в качестве определения SQL Injection использует канал данных, чтобы пропустить что-то в командном канале)

1

Да, до тех пор, пока вы можете использовать параметр для , каждый оператор добавлен в запрос динамически.
Слишком плохо, большинство фреймворков не позволяет вам так, но только для нескольких простых типов данных.