首页 新闻 搜索 专区 学院

(立即节贴)参数化查询为什么能够防sql注入呢??

0
悬赏园豆:10 [已关闭问题] 关闭于 2013-06-25 17:34

 

SqlCommand command = new SqlCommand(queryString, myConnection);
command.CommandText
=
"SELECT CustomerID, CompanyName FROM Customers "
+ "WHERE Country = @Country AND City = @City";
command.Parameters.Add(paramArray);

想知道ado.net源码是怎么实现的.
或是看过的人,给说一说.
它是怎么实现过滤的呢?

问题补充: 如果有一个参数 @condition 我能付 "userid>3"或是带有关键字的值 吗? 它和我们写的那些过滤关键字的方法或原理一样吗?
蝗虫的大腿的主页 蝗虫的大腿 | 初学一级 | 园豆:22
提问于:2010-09-09 11:44
< >
分享
所有回答(2)
0

你可以通过SQL Server Proflier工具监视一下SQL SERVER最终执行的是什么?

I,Robot | 园豆:9563 (大侠五级) | 2010-09-09 12:09
请解释一下.谢谢
支持(0) 反对(0) 蝗虫的大腿 | 园豆:22 (初学一级) | 2010-09-09 12:44
其实参数化也就是ado.net帮你把那些敏感的字符过滤了而已,参数化的查询,实际上是调用sp_executesql这个存储过程执行的.
支持(0) 反对(0) I,Robot | 园豆:9563 (大侠五级) | 2010-09-09 15:00
0

下面是储存过程的形式执行SQL,防止SQL脚本的攻击。

SqlCommand command = new SqlCommand(queryString, myConnection);
    command.CommandText
=
       
"SELECT CustomerID, CompanyName FROM Customers "
       
+ "WHERE Country = @Country AND City = @City";   
    command.Parameters.Add(paramArray);

love_99 | 园豆:325 (菜鸟二级) | 2010-09-09 12:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册