int MyID = Convert.ToInt32(Request.QueryString["ID"]);
string ID = ReplaceSQLChar(MyID.ToString().Trim(), true);//替换字符
DataTable DB = MyData.GetDBOne("Article", ID);这里是获取ID参数,ID是string类型;获取ID后,然后在下面三个TextBox中输入也同样做字符替换;string User = ReplaceSQLChar(this.TextBox1.Text, true);
string Pass = ReplaceSQLChar(this.TextBox2.Text, true);
string Tel = ReplaceSQLChar(this.TextBox3.Text, true);
ReplaceSQLChar类如下:
if (strInput == String.Empty)
{
return String.Empty;
}
else
{
if (ReplaceSQLAndOr)
{
strInput = strInput.Replace("and", "");
strInput = strInput.Replace("AND", "");
strInput = strInput.Replace("And", "");
strInput = strInput.Replace("or", "");
strInput = strInput.Replace("OR", "");
strInput = strInput.Replace("Or", "");
}
strInput = strInput.Replace(":", "");
strInput = strInput.Replace("'", "");
strInput = strInput.Replace("‘", "");
strInput = strInput.Replace(";", "");
strInput = strInput.Replace(",", "");
strInput = strInput.Replace("?", "");
strInput = strInput.Replace("<", "");
strInput = strInput.Replace(">", "");
strInput = strInput.Replace("(", "");
strInput = strInput.Replace(")", "");
strInput = strInput.Replace("@", "");
strInput = strInput.Replace("=", "");
strInput = strInput.Replace("+", "");
strInput = strInput.Replace("*", "");
strInput = strInput.Replace("&", "");
strInput = strInput.Replace("#", "");
strInput = strInput.Replace("%", "");
strInput = strInput.Replace("$", "");
//返回已过滤掉SQL字符的字符串
return strInput;
}
我想这样应该不会出什么问题了吧???????
string ID = ReplaceSQLChar(MyID.ToString().Trim(), true);//替换字符
DataTable DB = MyData.GetDBOne("Article", ID);这里是获取ID参数,ID是string类型;获取ID后,然后在下面三个TextBox中输入也同样做字符替换;string User = ReplaceSQLChar(this.TextBox1.Text, true);
string Pass = ReplaceSQLChar(this.TextBox2.Text, true);
string Tel = ReplaceSQLChar(this.TextBox3.Text, true);
ReplaceSQLChar类如下:
if (strInput == String.Empty)
{
return String.Empty;
}
else
{
if (ReplaceSQLAndOr)
{
strInput = strInput.Replace("and", "");
strInput = strInput.Replace("AND", "");
strInput = strInput.Replace("And", "");
strInput = strInput.Replace("or", "");
strInput = strInput.Replace("OR", "");
strInput = strInput.Replace("Or", "");
}
strInput = strInput.Replace(":", "");
strInput = strInput.Replace("'", "");
strInput = strInput.Replace("‘", "");
strInput = strInput.Replace(";", "");
strInput = strInput.Replace(",", "");
strInput = strInput.Replace("?", "");
strInput = strInput.Replace("<", "");
strInput = strInput.Replace(">", "");
strInput = strInput.Replace("(", "");
strInput = strInput.Replace(")", "");
strInput = strInput.Replace("@", "");
strInput = strInput.Replace("=", "");
strInput = strInput.Replace("+", "");
strInput = strInput.Replace("*", "");
strInput = strInput.Replace("&", "");
strInput = strInput.Replace("#", "");
strInput = strInput.Replace("%", "");
strInput = strInput.Replace("$", "");
//返回已过滤掉SQL字符的字符串
return strInput;
}
我想这样应该不会出什么问题了吧???????
int string float 。。
DataTable DB = MyData.GetDBOne("Article", ID);写的是类,ID只能是string类型。int转string后替换字符是没必要的。
SqlParameter pa1 = new SqlParameter("@UserID", SqlDbType.VarChar);
pa1.Value = UserID; SqlParameter pa2 = new SqlParameter("@GoodsID", SqlDbType.VarChar);
pa2.Value = GoodsID;
参数化
http://topic.csdn.net/u/20090729/14/26381958-0d6e-4b90-bc90-d275e9621f93.html
如果数据库发现可运算符号,直接报错即可。我在别的应用中曾经试过这种方法,还不错。
1.把关键词不要过滤成空,这样容易落进别人的陷井,譬如ANANDD经过你的处理后变成了
AND
2.既然ASP.NET提供了参数化命令,能用时就一定要用.
3.表中字段能用int类型的,就不要用字符串,这样在取值时,直接转为int,安全性提高很多.