ASP使用参数化查询数据库
摘要
<p>ASP连接数据库时容易出现漏洞,导致SQL注入攻击!使用参数化查询可以很好的解决这个问题。<br /><br />例子:<br /><br />dim sql,c<br />sql="select top 1 1 from domains where d_name=? or d_name like '%.'+?"<br />set c=Server.CreateObject("adodb.command")<br />c.commandType=1<br />c.commandText=sql<br />set c.ActiveConnection=conn<br />c.parameters.append c.createparameter("d_name1",200,1,124,d)<br />c.parameters.append c.createparameter("d_name2",200,1,124,d)<br />set r=c.execute()<br />set c.ActiveConnection=nothing<br />set c=nothing<br /><br />·基本格式见例子中的展示,使用adodb.command来执行SQL语句,并把参数在SQL语句中以问号(?)出现,再使用parameters集合的Append方法来给参数附加值。<br /></p>
ASP连接数据库时容易出现漏洞,导致SQL注入攻击!使用参数化查询可以很好的解决这个问题。
例子:
dim sql,c
sql="select top 1 1 from domains where d_name=? or d_name like '%.'+?"
set c=Server.CreateObject("adodb.command")
c.commandType=1
c.commandText=sql
set c.ActiveConnection=conn
c.parameters.append c.createparameter("d_name1",200,1,124,d)
c.parameters.append c.createparameter("d_name2",200,1,124,d)
set r=c.execute()
set c.ActiveConnection=nothing
set c=nothing
·基本格式见例子中的展示,使用adodb.command来执行SQL语句,并把参数在SQL语句中以问号(?)出现,再使用parameters集合的Append方法来给参数附加值。
·如果有多个参数,就在sql语句中使用多个问号(?)
·如果是Like或In这样运算符中出现参数,使用加号(+),把字符部分和问号分开
·在存储过程中,遇到Like的,也使用加号(+)来串字符串,不要直接把@VAR写到两个单引号之间去了
ADO的常用DataType
---------------------------------------//我个人觉得,应该是要记住的
200 varchar
3 int
16 tinyint
6 currency
135 adDBTimeStamp
129 adChar
热门信息
阅读 (161)
1 独特的随机字母阅读 (139)
2 检查和设置IIS服务器正确的权限阅读 (135)
3 存在的文件阅读 (128)
4 随机图像阅读 (124)
5 ASP读取、解析JSON数据