Delphi: что не так с моим SQL-запросом, который не возвращает никаких результатов - PullRequest
0 голосов
/ 06 октября 2018

Я пытался предотвратить инъекцию SQL в свое приложение Delphi, защищая входные данные пользователя с помощью следующего запроса:

procedure TForm1.Button1Click(Sender: TObject);
var userNameID : string;
begin
     userNameID := edit1.Text;
     with adoquery1 do
      begin
        sql.Clear;
        sql.Add('select * from users where id = :'''+userNameID+''';');
        Open;
      end;
end;

, но он не возвращает никаких результатов.

Можете ли вы сказать мне, чтонеправильно в моем коде, пожалуйста?

1 Ответ

0 голосов
/ 06 октября 2018

Ваш код ничего не делает для предотвращения внедрения SQL, потому что вы по-прежнему напрямую соединяете текст с запросом.Ваш синтаксис SQL также недопустим.

Примерно так будет работать:

procedure TForm1.Button1Click(Sender: TObject);
begin
  AdoQuery1.SQL.Text := 'select * from users where id = :ID');
  AdoQuery1.Parameters.ParamByName('ID').AsString := edit1.Text;
  AdoQuery1.Open;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...