用下列代码能防止注入式攻击
SqlParameter[] parameters = {
new SqlParameter("@sUser", SqlDbType.NVarChar,50)};新手,入门书上没过多介绍这个类。去百度了一下,发现这个的功能是验证长度和类型,可是在suer后面+个--类型和长度貌似也不会报错,想问问parameters防注入式的工作原理是怎样?
SqlParameter[] parameters = {
new SqlParameter("@sUser", SqlDbType.NVarChar,50)};新手,入门书上没过多介绍这个类。去百度了一下,发现这个的功能是验证长度和类型,可是在suer后面+个--类型和长度貌似也不会报错,想问问parameters防注入式的工作原理是怎样?
SELECT * FROM [User] WHERE [UserName] = '{0}' and [PassWord] = '{0}'
这是个很正常的语句,写DEMO的时候经常这样写。
又如果你很正常的判断出来的结果集的count是不是大于0或者大于等于1,true的时候就登陆成功
如果人家输入的用户名:asd'-- 放在SQL里是不是密码判断就可能被注释掉了呢。。
当然这是很低级很基础的一种注入方式。
如果你直接拼接语句,比如传入一个drop table a。
如果直接拼接的话的,那么drop就生效了。
如果通过参数的话,传入的仅仅是一个单词,没任何的作用。