Я знаю, что это загруженный вопрос, но я хочу понять теорию здесь.
Я попытался найти и проверить это на SO, и я действительно понимаю SQL угрозу инъекции.
Мой вопрос: Вам ВСЕГДА нужны параметризованные запросы?
например.
Если у меня есть поле ввода пользователя для поиска «pxName», у меня есть строка:
"SELECT * FROM tblPeople WHERE fName = '" & pxName & "'"
Я полностью вижу здесь риск, мы открыты для атаки, потому что пользователь имеет право вставлять то, что он хочет, в поле ввода.
Если, однако, у меня есть переменная, которую я создал.
напр. Создана новая запись через набор записей ADODB. Получен новый запрос PK
:
"SELECT * FROM tblPeople WHERE personID = " & NewPrimaryKey
Это угроза? Например, следует ли это параметризировать, поскольку параметризованные запросы - это «что вы делаете», или я на самом деле подвержен риску SQL внедрения, даже если пользователю некуда даже ввести свои хитрые строки для выполнения атаки?
Основной факт в том, что я создал приложение для доступа, которое мне нужно использовать, и теперь куча друзей из аналогичных компаний стремятся его попробовать. В настоящее время он вообще не использует параметризацию, однако, возможно, из 50 строк запросов в VBA есть только две с фактическими пользовательскими полями ввода, остальные являются отчетами и автоматически генерируемыми переменными запросами, подобными приведенным выше.
Спасибо!