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]

相关推荐