Select * From tb WHere a=@a and b=@b and c like ('%'+@c+'%')
解决方案 »
- 将winform客户端的数据上传至webservice服务器,用的ACCESS数据库,请问为何"说明"字段中包含特殊字符就会出错?特殊字符为一个小方格.
- 能实现局域网聊天,但就是实现不了外网聊天
- Database Context是什么意思??????????????????????????//
- contextMenuStrip右键菜单在webBrowser控件里的问题!
- 数组的比较(C#)来着有分
- 关于注册用户同名问题
- C#中数据源的使用,请高手指教
- 急救!Excel导入Sql时如何实现列的重新对应!
- c#中如何做想word那样的特殊符号插入工具?
- 如何才能长专家分,到什么标准才能加三角。
- C#TreeView根据Combox的值来定位到节点
- 没有实现IComparable,Sort函数为什么是编译时不检查错误,而是运行时检查错误?
找本web更安全编写代码看下就知道,以后你网站发布后,只要是多人点,人家就会搞你的,而sql注入式攻击是常见的一种
强类型的,在程序里进行转换校验后再使用,比如
int.TryParse(para, out intPara) ..最好还是用SQL参数传入
你输入后 我后台代码 首先会将你的 单引号 替换成了 中文的单引号 整个字符就成了 id='‘;truncate table xx--' 你觉得 还会注入sql么
protected void Btn_Login_Click(object sender, EventArgs e)
{
List<SqlParameter> sqlpa = new List<SqlParameter>();//实例化List<SqlParameter>
sqlpa.Add(new SqlParameter("@name", Txt_UserName.Text.ToString().Trim()));//给List<SqlParameter>赋植
string sql = "select User_ID,User_TrueName,User_PassWord from User_Info where User_Name=@name and ValidFlay=1";//sql语句
DataTable DTUser = SH.Select(sql, sqlpa);//查询Table
}
public bool Operation(string Sql, List<SqlParameter> parameter)
{
int falg = 0;
SqlConnection sqlCon = new SqlConnection();//实例化SqlConnection
sqlCon.ConnectionString = ConnString;//数据库连接字符串
Sql = common.SqlToUBB(Sql);
try
{
sqlCon.Open();//打开数据库连接
SqlCommand cmd1 = new SqlCommand(Sql, sqlCon);//sql语句
if (parameter != null)//若有参数
{
for (int i = 0; i < parameter.Count; i++)//历遍
{
parameter[i].Value = common.HtmlToUBB(parameter[i].Value.ToString());
cmd1.Parameters.Add(parameter[i]);//给SqlCommand添加参数
}
}
falg = cmd1.ExecuteNonQuery();//获取受影响行数
}
finally
{
sqlCon.Close();//关闭数据库连接
}
if (falg > 0)//操作成功
{
return true;
}
return false;
}
楼上的有举例 id='';truncate table xx==' 这样确实可怕
但是你处理 ' " 这两个符号就变成了
id=''';truncate table xx==' 这样数据会当成 是 ';truncate table xx==这样一个数据
先把带参数的查询语句拼出来,最后再把用户的输入导入到参数里面。
那样就可以彻底地解决 SQL注入的问题了。