string commString = string.Format("select * from userInfo where uname='"+textBox1.text+"' ");
SqlDataAdapter sqldata = new SqlDataAdapter(commString, con);
DataTable datatable1 = new DataTable();
sqldata.Fill(datatable1);
请教各位大神,以上语句是否存在被SQL注入的危险。
我自己直接在 textBox1 里输1=1;delete from test1;没有注入效果。难道是SqlDataAdapter 只填充数据,不执行 ExecuteNonQuery 类似的命令么,也就是说像这样的sqldata.Fill(datatable1)填充 是不会有注入危险的?
自学C#,谢谢大家不吝赐教。SqlDataAdapter 的注入疑问C#sql注入
SqlDataAdapter sqldata = new SqlDataAdapter(commString, con);
DataTable datatable1 = new DataTable();
sqldata.Fill(datatable1);
请教各位大神,以上语句是否存在被SQL注入的危险。
我自己直接在 textBox1 里输1=1;delete from test1;没有注入效果。难道是SqlDataAdapter 只填充数据,不执行 ExecuteNonQuery 类似的命令么,也就是说像这样的sqldata.Fill(datatable1)填充 是不会有注入危险的?
自学C#,谢谢大家不吝赐教。SqlDataAdapter 的注入疑问C#sql注入
string cmdStr = "select * from USERINFO where USERS=@uname and PWD=@upwd";
SqlCommand cmd = new SqlCommand(cmdStr, con);
cmd.Parameters.Add("@uname", SqlDbType.Char,10).Value = this.username.Text.ToString();
cmd.Parameters.Add("@upwd", SqlDbType.Char,10).Value = this.userpwd.Text.ToString();
SqlDataReader reader = cmd.ExecuteReader();
关键是 我想 知道 SqlDataAdapter 是不是没有注入危险,或者是我理解还不够透彻。
SqlConnection con = new SqlConnection("database=test;server=localhost;User id=sa;password=密码");
con.Open();
string sql = "select * from test where username='" + gongji + "'";
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
sda.Fill(ds);
con.Close();
if (ds != null)
{ }以上代码亲测的结果是,表test的所有行都被删除了
再问一个问题,参数化 WHERE MC001 like @MC001
sqldata.SelectCommand.Parameters.Add("@MC001", SqlDbType.Char,22).Value =ph1.Text.ToString().Trim();
类似这样的like 语句如何写啊,像SQL 那样的 like '%@MC001%' 查不到任何数据,用"%"+ph1.Text.ToString().Trim()+"%" 也不行。
自己解决了:
sqldata.SelectCommand.Parameters.Add("@MC001", SqlDbType.VarChar,22).Value ="%"+ph1.Text.ToString().Trim()+"%";
之前没搞定这个问题是因为 数据表的字段类型是char,所以 写成 SqlDbType.Char,而参数化查询会自动填充20位长度,所以查不出来数据,改成varChar,再清掉左右空格即可实现参数化模糊查询。
这个问题困扰我半年了,终于解决了。
你传 1=1;delete from test1
得到
select * from userInfo where uname='1=1;delete from test1' 你觉得这个语句会怎么执行。