之前只在BS架构的项目中考虑了Sql注入问题,却很少考虑到用了多年的Delphi项目也应该考虑Sql注入的问题,今天做了个实验,成功完成注入,把表里数据全部删除,以后再做Delphi项目还真的考虑这个问题。

总体讲,大体知道有两种方式可以避免Delphi中的Sql注入:1、用QuotedStr替代'''进行字符串拼接;2、采用传参数的方式与数据库交互,这种方式哪天再仔细体验一下。

以下为一个小测试,一个简单的插入语句,如果Edit1内容为
abc') delete from tb1 insert into tb1(Id, Name) values(123, 'xxxx
则运行后,tb1表中之前数据将全部清除,只剩下insert into tb1(Id, Name) values(123, 'xxxx
添加的一条

[delphi] view plaincopy
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3. sqlStr: String;
  4. begin
  5. sqlStr := 'insert into tb1(Id, Name) values(1, ''' + edit1.Text + ''')';
  6. self.ADOQuery1.SQL.Text := sqlStr;
  7. self.ADOQuery1.ExecSQL;
  8. ShowMessage('成功完成Sql注入');
  9. end;

改成sqlStr := 'insert into tb1(Id, Name) values(1, ' + QuotedStr(edit1.Text) + ')';

则可避免。

QuotedStr参考如下语句:

adoquery1.sql.text:=
'select 字符型编号 from YourTable where 字符型编号='abc' and 整型编号=123';
等价于
adoquery1.sql.text:=
'select '+AFieldName+' from '+ATableName+' where '+AFieldName
+'='''+AStr+''' and 整型编号='+AnIntStr;
也等价于
adoquery1.sql.text:=
'select '+AFieldName+' from '+ATableName+' where '+AFieldName
+'='+QuotedStr(AStr)+' and 整型编号='+Inttostr(AnInt);
传到数据库服务器为:
select 字符型编号 from YourTable where 字符型编号='abc' and 整型编号=123

转载于:https://www.cnblogs.com/chenmfly/p/4780647.html

Delphi考虑sql注入 QuotedStr相关推荐

  1. Delphi考虑sql注入

    之前只在BS架构的项目中考虑了Sql注入问题,却很少考虑到用了多年的Delphi项目也应该考虑Sql注入的问题,今天做了个实验,成功完成注入,把表里数据全部删除,以后再做Delphi项目还真的考虑这个 ...

  2. Delphi实现sql 复制编程

    { Copyright (c) 咏南工作室 2006 作者: 陈新光 EMail:hnxxcxg@yahoo.com.cn QQ:   254072148 手机: 13025531017 TODO: ...

  3. php mysql 防 sql注入_php 防sql注入方法

    php防sql注入的方法:1.使用mysql_real_escape_string方法转义SQL语句中使用的字符串中的特殊字符:2.打开magic_quotes_gpc来防止SQL注入:3.通过自定义 ...

  4. resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查 ...

  5. mybaits的模糊查询_mybatis模糊查询防止SQL注入(很详细)

    SQL注入,大家都不陌生,是一种常见的攻击方式.攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如"or '1'='1'"这样的语句),有可能入侵参数检验不足的应用程序 ...

  6. SQL注入漏洞全接触--入门篇

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  7. Sql注入和Html注入

    举例说,有一间公司的网页服务器上有一个留言板的代码,用来让用户发表简短的口信,例如: hello word!!!! 不过,这个代码原来有漏洞.一个意图入侵者得悉这间公司采用了有问题的代码,于是试图通过 ...

  8. mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...

    本文实例讲述了MySQL解决SQL注入的另类方法.分享给大家供大家参考,具体如下: 问题解读 我觉得,这个问题每年带来的成本可以高达数十亿美元了.本文就来谈谈,假定我们有如下 SQL 模板语句: se ...

  9. 【数据库】 兴唐第二十七节课只sql注入

    首先来一个用户登录程序 public static void login(String username, String password) {Connection conn = null;State ...

最新文章

  1. elcipse 安装lombok插件解决 @Slf4j 等找不到log变量问题
  2. 深入理解虚拟机之虚拟机字节码执行引擎
  3. python打印log重复问题
  4. 列举Java开发者必不可少的9大编程网站
  5. ccpc河北大学生程序设计竞赛dp小总结
  6. Python中sort()和sorted()的区别
  7. 游山玩水拈花惹草 --- SAP 顾问出差期间自娱自乐的妙招
  8. JavaScript学习01
  9. python400集视频教程-微软官方出品的400集Python精品视频教程,这正是我们急需的!...
  10. Tri-training, 协同训练算法
  11. matlab分段拟合程序,如何用matlab拟合出分段函数?
  12. 一位业内人士关于奶粉各品牌的评价(转载)
  13. 怎样清空微信全部聊天记录?轻松几步!如何操作清除微信聊天记录?
  14. 传奇私服搭建网站的几种方法
  15. android 小q机器人,腾讯小Q机器人第二代,是机器人也是家人
  16. 阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军 IoT 这一年 | 问底中国 IT 技术演进...
  17. 【javascript】class的继承之super的使用
  18. Tableau实现跑道图
  19. 佳能打印机浏览不到计算机,电脑为什么不识别佳能打印?
  20. Instructional Technology Notes at random

热门文章

  1. Linux查看公网IP
  2. w锋ndows用户组设置,windows怎么设置用户组权限
  3. 拉货搬家app小程序开发类似货拉拉快狗打车同城货运小程序
  4. 基于nodejs爬虫
  5. 10.0 SpringMVC源码分析之MVC 模型由来
  6. linux下配置jdk8
  7. 记一篇IT培训日记017-测试中
  8. css怎么让动画下过一直重复,CSS动画重复无需重新加载
  9. 将maven项目打包并发布到maven中央仓库
  10. javac环境变量配置csdn_Java环境变量配置超详细教程