SQL防注入SqlParameter的使用
阿新 • • 發佈:2019-02-03
概述:一般來說,在更新DataTable或是DataSet時,如果不採用SqlParameter,那麼當輸入的Sql語句出現歧義時,如字串中含有單引號,程式就會發生錯誤,並且他人可以輕易地通過拼接Sql語句來進行注入攻擊。
目的:防止Sql注入被攻擊。
程式碼:首先,先寫一個沒有SqlParameter注入的程式碼
String sql=”select * from Table1 where ID=1”
SqlDataAdapter red=new SqlDataAdapter ();
Dataset st=new Dataset ();
red.Fill(st);
try
{
conn.Open();
return(cmd.ExecuteNonQuery());
}
catch(Exception)
{
return-1;
throw;
}
finally
{
conn.Close();
}
這是沒有SqlParameter注入的程式碼,除了存在安全問題外,該方法還無法解決二進位制流的更新。
解決方法 可以使用ADD或AddRange方法
AddRange方法
SqlParameter sql=new SqlParameter(“@Name”,”Pubiing”);
SqlParameter[] paras = newSqlParameter[] { new
newSqlParameter("@ID","1") };
cmd.Parameters.AddRange(paras);