`
lostarctic
  • 浏览: 4206 次
  • 性别: Icon_minigender_2
  • 来自: 邢台
最近访客 更多访客>>
社区版块
存档分类
最新评论

sql注入式攻击防范

 
阅读更多
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]
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics