sql注入式攻击防范
1》用存储过程
CREATEPROCEDURE[dbo].[sp_us_CheckUserInfo]
@LoginNamevarchar(30),
@Passwordvarchar(60)
AS
Select*fromus_UserLoginName=@LoginNameandPassword=@Password
GO
//检查用户名和密码是否正确
PrivateDataSetCheckUserInfo(stringuserName,stringpwd)
{
SqlParameter[]parms=newSqlParameter[]
{newSqlParameter("@LoginName",SqlDbType.VarChar,30),
newSqlParameter("@Password",SqlDbType.VarChar,60)};
parms[0].Value=userName;
parms[1].Value=pwd;
//这里使用了SqlHelper类
returnSqlHelper.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*fromtabwherename='"+name+"'"//这种方法
全都改为传参sql="Select*fromtabwherename=@name"//这种方法
[size=medium][/size]