|
我在寻找一些预防措施SQL注入的技巧。在一个论坛上告诉我我的代码不安全,我正在寻找一个足够好的人来帮助我解决此问题。3 L1 {' @5 u( K! v
我有一个Web提交后转到表单aspx.cs页面,然后插入数据ms sql数据库。% r+ g+ `$ D1 K" N: R
protected void Submit_Click(object sender,EventArgs e) string FullStartTime = StartTimeHourList.SelectedValue ":" StartTimeMinuteList.SelectedValue " " StartTimeAMList.SelectedValue; string FullEndTime = EndTimeHourList.SelectedValue ":" EndTimeMinuteList.SelectedValue " " EndTimeAMList.SelectedValue; OleDbConnection conn; OleDbCommand cmd; conn = new System.Data.OleDb.OleDbConnection(""); cmd = new System.Data.OleDb.OleDbCommand();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;conn.Open();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cmd.Connection = conn; var sql = String.Format(@"INSERT INTO FormTable1 (Nonprofit,Contact,Phone,Email,Event,StartDate,EndDate,StartTime,EndTime,Place,Comments,SubmitDate) values {0}、{1}、{2}、{3}、{4}、{5}、{6}、{7}、{8}、{9}、{10}、{11}", NonprofitTxtBox.Text,ContactTxtBox.Text,PhoneTxtBox.Text,EmailTxtBox.Text,EventTxtBox.Text, StartDateTxtBox.Text,EndDateTxtBox.Text,FullStartTime,FullEndTime,PlaceTxtBox.Text,CommentsTxtBox.Text,DateTime.Now); cmd.CommandText = sql; cmd.ExecuteNonQuery();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;conn.Close();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ h( X% P& E- [! {7 P+ H9 c 解决方案: ( j. ]$ T' g X$ o! q& ~( K
最直接的解决方案是 不3 q% c2 ]' c0 T4 m- O! r' a- |
通过串联字符构建sql,而是使用params。假如你用的是SqlCommand,可执行以下操作,否则按照@MarcB建议操作
0 ~$ E+ l7 b2 n E7 S/ L6 L2 {SqlCommand cmd = new SqlCommand("INSERT dbo.Table (field1,field2,field3) VALUES (@f1,@f2,@f3)",conn);cmd.Paramters.Add("@f1",SqlDbType.VarChar,50).Value = "abc";cmd.Paramters.Add("@f2",SqlDbType.Int).Value = 2;cmd.Paramters.Add("@f3",SqlDbType.VarChar,50).Value = "some other value"; |
|