Мне нужно защитить приложение от SQL-инъекции. Приложение подключается к Oracle, используя ADO, и выполняет поиск имени пользователя и пароля для аутентификации.
Из того, что я читал до сих пор, лучший подход - использование параметров, а не назначение всего SQL как строки. Что-то вроде этого:
query.SQL.Text := 'select * from table_name where name=:Name and id=:ID';
query.Prepare;
query.ParamByName( 'Name' ).AsString := name;
query.ParamByName( 'ID' ).AsInteger := id;
query.Open;
Кроме того, я собираюсь проверить входные данные пользователя и удалить ключевые слова SQL, такие как удаление, вставка, выбор и т.д. Любой символ ввода, отличный от обычных букв и цифр ASCII, будет удален.
Это обеспечит мне минимум уровня безопасности?
Я не хочу использовать какие-либо другие компоненты, кроме стандарта Delphi 7 и Jedi.