ado.net使用参数化的sql语句为什么可以防止sql注入攻击?

比如Sqlserver的插入语句"insertintousersvalues(@username,@password)"为什么可以防止sql注入攻击?在书上看到的,呵呵~... 比如Sql server 的插入语句"insert into users values(@username,@password)"为什么可以防止sql注入攻击?在书上看到的,呵呵~
比如Sql server 的插入语句"insert into users values(' "+tbxUsername.Text+" ',' "+tbxPassword.Text+" ')"为什么不能防止sql注入攻击?
我用的是C#班ado.net
展开
 我来答
szm341
推荐于2016-04-25 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5169万
展开全部
参数化数据库操作就是可以防止sql注入的,它将所有传递过来的参数仅作为参数使用,若参数中含有关键字也不会被执行
追问
这是使用了参数不会遭sql注入嘛,但不使用参数为什么会遭sql注入呢
追答
我上面算是回答了吧,若参数中含有关键字,又没有被参数化,那么参数中的关键字会被当成数据库中的命令去处理,这样就形成了注入
25435331
2013-07-17 · TA获得超过121个赞
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:109万
展开全部
拼字符串的话,会出现很多问题
比如 select * from emp where name='SMITH'
这里只能查出一条数据
但是如果拼成 select * from emp where name='SMITH' or 1=1
那整个数据库的数据都查出来了
更多追问追答
追问
但只给它一个文本框,不可能造成这样啊,比如代码里写“select * from emp where name='tbx.Text',用户再怎么乱写也只能让sql语句变成select * from emp where name='SMITH or 1=1'啊?
追答
这么写是最容易的
你写上name=tbx.text
如果tbx.tex='smith' or 1=1呢?是不是就查出来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式