原始代码如下

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'

classic asp中使用ADODB.Command防止sql injection的更多相关文章

  1. SQL injection

    SQL injection is a code injection technique, used to attack data-driven applications, in which malic ...

  2. SQL injection:Summary ,Overview and Classification

    What is SQL injection (SQLi)? SQL注入是一种web安全漏洞,让攻击者干扰应用程序对其数据库的查询. 它通常使得攻击者查看他们通常无法检索的数据. 这可能包括属于其他用户 ...

  3. 【转】asp.net mvc3 简单缓存实现sql依赖

    asp.net mvc3 简单缓存实现sql依赖   议题 随 着网站的发展,大量用户访问流行内容和动态内容,这两个方面的因素会增加平均的载入时间,给Web服务器和数据库服务器造成大量的请求压力.而大 ...

  4. 在Hive中执行DDL之类的SQL语句时遇到的一个问题

    在Hive中执行DDL之类的SQL语句时遇到的一个问题 作者:天齐 遇到的问题如下: hive> create table ehr_base(id string); FAILED: Execut ...

  5. SQL Server中一些有用的日期sql语句

    SQL Server中一些有用的日期sql语句 1.一个月第一天的 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 2.本周的星期一 SELECT DA ...

  6. postgres中几个复杂的sql语句

    postgres中几个复杂的sql语句 需求一 需要获取一个问题列表,这个问题列表的排序方式是分为两个部分,第一部分是一个已有的数组[0,579489,579482,579453,561983,561 ...

  7. asp上传图片提示 ADODB.Stream 错误 '800a0bbc'的解决方法

    asp上传图片提示 ADODB.Stream 错误 '800a0bbc' 有这个提示有很多问题导致.权限是常见一种.这个不多说,还有一个有点怪的就是 windows2008显示系统时间的格式竟然是:2 ...

  8. 在SQL中取出字符串中数字部分或在SQL中取出字符部分

    在SQL中取出字符串中数字部分或在SQL中取出字符部分 编写人:CC阿爸 2013-10-18 近来在开发一个项目时,一包含数字的字符串,需要取出中间的数字部分进行排序.经过baidu搜索.并结合自己 ...

  9. 【转】Oracle中如何用一条SQL快速生成10万条测试数据

    转自http://blog.csdn.net/welken/article/details/4971887   做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入, ...

随机推荐

  1. oc结构

    结构 在oc中只能声明变量 不能声明函数和类 结构声明 struct DateT { int month; int day; int year; }; 结构可以在起最后的分号之后定义结构变量,并且可以 ...

  2. Permutations,Permutations II,Combinations

    这是使用DFS来解数组类题的典型题目,像求子集,和为sum的k个数也是一个类型 解题步骤: 1:有哪些起点,例如,数组中的每个元素都有可能作为起点,那么用个for循环就可以了. 2:是否允许重复组合 ...

  3. BZOJ 3648: 寝室管理( 点分治 + 树状数组 )

    1棵树的话, 点分治+你喜欢的数据结构(树状数组/线段树/平衡树)就可以秒掉, O(N log^2 N). 假如是环套树, 先去掉环上1条边, 然后O(N log^2 N)处理树(同上); 然后再O( ...

  4. tcp窗口滑动以及拥塞控制

    转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥 ...

  5. 点击上下页,实现图片滚动的jquery代码

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...

  6. Django建立helloworld自定义页面

    目录介绍 按照上一篇初学Django首先建立起一个默认站点,生成如下的目录结构: manage.py 一种命令行工具,允许你以多种方式与该 Django 项目进行交互. 键入python manage ...

  7. Struts2命名空间问题

    警告: No configuration found for the specified action: '/myNameSpace/login.action' in names 今天花了点时间把st ...

  8. ApiDemos示例学习(1)——ApiDemos示例的导入

    ---恢复内容开始--- 今天准备开始写这个ApiDemos示例的学习日记了,放在网上以监督自己! 首先是导入该示例.如果我们在配置Android开发环境是,利用Android SDK 安装包中的SD ...

  9. kernal linear regression

  10. Unity 绘制多边形

    最近工程需要用到一个多边形用来查看角色属性,于是就研究了下Mesh用网格做了一个.遗憾的的 UGUI 渲染不了 3D 物体,然后又用了一段时间研究了下UGUI的网格绘制. 不过终于还是完成了,虽然有些 ...