如何在SQL查询中转义特殊字符,以避免注入

Raf*_*ari 3 sql delphi delphi-2010

使用delphi 2010,我想知道是否有某种方法来逃避以下字符串,以使其免受sql注入攻击:

我的字符串:

    SQLQuery1.SQL.Text := 'SELECT * FROM registered WHERE email="'+
      email+'" and login_pass="'+password+'"';
Run Code Online (Sandbox Code Playgroud)

如何重写这个字符串,使其比有人在我的TEditbox中输入"他的电子邮件或密码"更安全!

Ken*_*ite 13

使用参数,让数据库驱动程序处理这些东西.

SQLQuery1.SQL.Text := 'SELECT * FROM registered WHERE email= :email'+
  ' and login_pass = :password';
SQLQuery1.ParamByName('email').AsString := EMail;
SQLQuery1.ParamByName('password').AsString := Password;
Run Code Online (Sandbox Code Playgroud)

  • 这段代码完美无缺; 我在每天运行的大量代码中使用它.你用的是什么数据库?什么数据库组件?(顺便说一句,在发布SQL问题时,你应该总是提到数据库引擎,因为它们之间的语法和功能是不同的.) (3认同)
  • @Rafik:再一次,您正在使用什么数据库**,什么组件?(我在最近的评论中问,是否您会注意到这一点。) (2认同)