когда безопасно НЕ использовать параметризованный запрос - PullRequest
0 голосов
/ 23 апреля 2020

Я знаю, что это загруженный вопрос, но я хочу понять теорию здесь.

Я попытался найти и проверить это на SO, и я действительно понимаю SQL угрозу инъекции.

Мой вопрос: Вам ВСЕГДА нужны параметризованные запросы?

например.

Если у меня есть поле ввода пользователя для поиска «pxName», у меня есть строка:

"SELECT * FROM tblPeople WHERE fName = '" & pxName & "'"

Я полностью вижу здесь риск, мы открыты для атаки, потому что пользователь имеет право вставлять то, что он хочет, в поле ввода.

Если, однако, у меня есть переменная, которую я создал.

напр. Создана новая запись через набор записей ADODB. Получен новый запрос PK

:

"SELECT * FROM tblPeople WHERE personID = " & NewPrimaryKey

Это угроза? Например, следует ли это параметризировать, поскольку параметризованные запросы - это «что вы делаете», или я на самом деле подвержен риску SQL внедрения, даже если пользователю некуда даже ввести свои хитрые строки для выполнения атаки?

Основной факт в том, что я создал приложение для доступа, которое мне нужно использовать, и теперь куча друзей из аналогичных компаний стремятся его попробовать. В настоящее время он вообще не использует параметризацию, однако, возможно, из 50 строк запросов в VBA есть только две с фактическими пользовательскими полями ввода, остальные являются отчетами и автоматически генерируемыми переменными запросами, подобными приведенным выше.

Спасибо!

...