原始代码如下

Set Conn = Server.CreateObject("Adodb.Connection")
Conn.Open "Provider=Microsoft.Jet.Oledb.4.0;Data Source="&Server.MapPath("*****.mdb")
sql="select * from users where username='"&request.Form("username")&"' and password='"&request.Form("password")&"'"
rs.open sql,conn,1,1

这种拼接sql语句的做法不可取,有很大隐患,最常见的是在WHERE语句中添加恒等条件即可执行一些sql语句,进而获取大量信息,保险的方式是使用参数化的形式,大部分脚本语言例如PHP,js等都有类似处理,但由于传统的asp已经过时了,所以这方面资料较少,在查找和实践后,我将修改方式记录下来,避免大家绕远路。

……
set sql_cmd = Server.CreateObject("Adodb.Command")
sql_cmd.ActiveConnection = Conn sql_cmd.CommandText = "select * from users where username=param1 and password=param2" //ADO.CreateParameter(name,type,direction,size,value)
sql_cmd.Parameters.Append sql_cmd.CreateParameter("param1",202,1,20,request.Form("username"))
//sql_cmd.CreateParameter("param1",adVarWChar,adParamInput,20,request.Form("username")),使用这种方式会出错,参数不识别adVarWChar,不知道为什么
sql_cmd.Parameters.Append sql_cmd.CreateParameter("param2",202,1,20,request.Form("password")) set rs = sql_cmd.Execute

参考:

1.使用 Command 对象调用示例存储过程

2.Filtering SQL injection from Classic ASP

3. ADODB.Command error '800a0bb9'

最新文章

  1. Fis3的前端工程化之路[三大特性篇之资源定位]
  2. Bzoj索引
  3. 跟我一起学WCF(10)——WCF中事务处理
  4. h5 本地存储和读取信息
  5. web.xml 配置 加载顺序
  6. hdu 2177 取(2堆)石子游戏 博弈论
  7. 转载有个小孩跟我说LINQ(重点讲述Linq中GroupBy的原理及用法)
  8. 【考虑周全+数学变形】【11月赛】Is it a fantastic matrix?
  9. 把luasocket集成到c++中
  10. 集合之深入理解HashMap
  11. ffplay播放器移植VC的工程:ffplay for MFC
  12. SVN和GIT
  13. day02-运算符 and 和 or 的用法
  14. 实现mypwd和mybash
  15. idea实现自动sql-generator的使用
  16. Android逆向基础----APK文件结构
  17. SpringBoot的Session并发控制
  18. Mac Mysql 修改初始化密码
  19. Canvas---clearRect()清除圆形区域
  20. Spring Boot开发之流水无情(二)

热门文章

  1. Oracle触发器Trigger2行级
  2. Oracle 物理DG切换
  3. Qt编程学习网站
  4. php中json_encode中文编码问题
  5. 浏览器的重绘repaints与重排reflows深入分析
  6. ACID:数据库事务正确执行的四个基本要素
  7. [转]C 语言指针的使用
  8. 实现水电气一卡通 IC卡扇区分配
  9. rsyslog 日志服务器端配置
  10. MYSQL中limit的使用