我有数据库功能,它选择不同的条件数据。有两种可能的方法来实现这一点。 首先哪个更好的方法来停止sql注入
public string select(string name)
{
string s = null;
query = "select * from tablename where [email protected]";
con.Open();
com=new SqlCeCommand(query,con);
com.Parameters.AddWithValue("@name",name);
sdr=com.ExecuteReader();
while (sdr.Read())
{
s = sdr.GetString(0);
}
return s;
}
在这种方法中,我需要在查询,如订单的地名或在查询多个参数变化小的,地址,前20名等代码的不同功能,但这种方法固定在sql注入方面。 二
public string select(string query)
{
string s = null;
con.Open();
com=new SqlCeCommand(query,con);
sdr=com.ExecuteReader();
while (sdr.Read())
{
s = sdr.GetString(0);
}
return s;
}
在第二种方法我通过数据库查询与值函数的参数,所以我不需要com.Parameters.AddWithValue("@name",name);
,并不需要为选择查询的变化代码的不同功能。查询中的参数值由代码而不是由用户给出。由于用户未给出参数输入,因此可以使用此方法进行sql注入。
哪一个是安全的,高效的,因为我的应用程序无法承受数据丢失。
我结合之前,我曾经通过数据持久层验证长。在我达到这一点之前,我会拒绝它。 – duffymo 2013-04-30 12:41:49
Imho第一种方法更好 €:duffymo是正确的,检查你的输入。 – jAC 2013-04-30 12:41:53