sql - 如何在 SQL 查询中转义“”等特殊字符以避免注入(inject)

标签 sql delphi delphi-2010

使用delphi 2010,我想知道是否有某种方法可以转义以下字符串以使其免受sql注入(inject)攻击:

我的字符串:

    SQLQuery1.SQL.Text := 'SELECT * FROM registered WHERE email="'+
      email+'" and login_pass="'+password+'"';

如何重写此字符串,使其比某人在我的 TEditbox 中键入“作为他的电子邮件或密码时更安全!

最佳答案

使用参数,并让数据库驱动程序处理这些内容。

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

关于sql - 如何在 SQL 查询中转义“”等特殊字符以避免注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8637889/

相关文章:

Delphi - 暂停所有播放的声音以在我的应用程序上播放特定的声音

sql - 除了 group by 子句中的范围之外,还选择单个值

mysql - 使用连接从表中删除重复行

forms - 不使用 VCL 创建表单

IOS + 德尔福 : low memory warnings - possible memory leak with TTexture?

delphi - 什么是安全的最大堆栈大小或如何衡量堆栈的使用?

mysql - 复杂的 MYSQL 查询 4 ​​个表寻找 1 个结果

sql - 如何将默认系统日期从 ymd 更改为 dmy

delphi - 我需要在初始化时设置动态数组吗?

delphi - 使用 "for in"语句并编译错误E2064