Мне нужно защитить приложение от 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, такие как delete, insert, select и т. Д. Любой вводимый символ, отличный от обычных букв и цифр ASCII, будет удален.
Это обеспечит мне минимальный уровень безопасности?
Я не хочу использовать какие-либо другие компоненты, кроме стандарта Delphi 7 и Jedi.