1》用存储过程
CREATE PROCEDURE [dbo].[sp_us_CheckUserInfo]
@LoginName varchar(30),
@Password varchar(60)
AS
Select * from us_User LoginName=@LoginName and Password=@Password
GO
// 检查用户名和密码是否正确
Private DataSet CheckUserInfo(string userName, string pwd)
{
SqlParameter[] parms = new SqlParameter[]
{ new SqlParameter("@LoginName", SqlDbType.VarChar, 30),
new SqlParameter("@Password", SqlDbType.VarChar, 60) };
parms[0].Value = userName;
parms[1].Value = pwd;
// 这里使用了SqlHelper类
return SqlHelper.ExecuteDataset(_connectString, CommandType.StoredProcedure, "sp_us_CheckUserInfo", parms);
}
2》过滤非法字符,对特殊字符进行过滤|and|1=1|exec|insert|select|delete|update|like|count|chr|mid|master|or|truncate|char|declare|join
这是网上的方法,但因为这里的单词都是常用的,过滤是很不实际的,
那么就会替换的方法将上面的关键字全都做如下操作
如:Delete用正则替换为D-e-l-e-t-e
在数据库里面读取出来就用正则将D-e-l-e-t-e替换为Delete
3》使用参数传值的SQL语句
1:不进行如sql="Select * from tab where name ='"+name+"'" //这种方法
全都改为传参sql="Select * from tab where name =@name" //这种方法
[size=medium][/size]
CREATE PROCEDURE [dbo].[sp_us_CheckUserInfo]
@LoginName varchar(30),
@Password varchar(60)
AS
Select * from us_User LoginName=@LoginName and Password=@Password
GO
// 检查用户名和密码是否正确
Private DataSet CheckUserInfo(string userName, string pwd)
{
SqlParameter[] parms = new SqlParameter[]
{ new SqlParameter("@LoginName", SqlDbType.VarChar, 30),
new SqlParameter("@Password", SqlDbType.VarChar, 60) };
parms[0].Value = userName;
parms[1].Value = pwd;
// 这里使用了SqlHelper类
return SqlHelper.ExecuteDataset(_connectString, CommandType.StoredProcedure, "sp_us_CheckUserInfo", parms);
}
2》过滤非法字符,对特殊字符进行过滤|and|1=1|exec|insert|select|delete|update|like|count|chr|mid|master|or|truncate|char|declare|join
这是网上的方法,但因为这里的单词都是常用的,过滤是很不实际的,
那么就会替换的方法将上面的关键字全都做如下操作
如:Delete用正则替换为D-e-l-e-t-e
在数据库里面读取出来就用正则将D-e-l-e-t-e替换为Delete
3》使用参数传值的SQL语句
1:不进行如sql="Select * from tab where name ='"+name+"'" //这种方法
全都改为传参sql="Select * from tab where name =@name" //这种方法
[size=medium][/size]