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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值