///〈returns〉返回True"> ///〈returns〉返回True" />
C#检查字符串,防SQL注入攻击

C#检查字符串,防SQL注入攻击

ID:46283382

大小:77.00 KB

页数:7页

时间:2019-11-22

C#检查字符串,防SQL注入攻击_第1页
C#检查字符串,防SQL注入攻击_第2页
C#检查字符串,防SQL注入攻击_第3页
C#检查字符串,防SQL注入攻击_第4页
C#检查字符串,防SQL注入攻击_第5页
资源描述:

《C#检查字符串,防SQL注入攻击》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C#检查字符串,防SQL注入攻击///

///检测是否含有危险字符(防止Sql注入)/////////〈returns〉返回True或falscprivateboolHasDangcrousContcnts(stringcontents){boolbRcturnValuc=false;if(contents・Length>0){//converttolowerstringsLowerStr二contents・ToLower();//RcgularExprcssio

2、nsstringsRxStr=(sands)

3、(sands)

4、(slikes)

5、(selects)

6、(inserts)

7、(dclctcs)

8、(update's[sS]・*sset)

9、(crcatcs)

10、(stablc)

11、(<[iframe

12、/iframe

13、script

14、/script])(,)

15、(sexec)

16、(sdeclare)

17、(struncate)

18、(smaster)

19、(sbackup)(smid)

20、(scount)”;//MatchboolbisMatch=false;System・Text・RcgularExprcssions・Regex

21、sRx=newSystem・Text・RcgularExprcssions・Regex(sRxStr);bisMatch=sRx.IsMatch(sLowerStr,0):if(bisMatch)bReturnValue=true:returnbReturnValue;}在解决SQLInjection的可行方案中,基于正则表达式的方案不予考虑,理市有:1、即使使用了RegexOptions.Compile选项,正则表达式的性能也不很理想,尤其是在“流量巨大”的网站中很可能会造成性能瓶颈。2、过滤的范围很难把握,不是过宽就是过窄。另一方面,这个表达式对〃exec〃开头的字符串却无能为力。如果

22、这个表达式可以只是针对某一个或几个参数进行验证,这样却必须保证对所有其他的输入参数都写对应的表达式来过滤。可以使用的方案主要有:1、使用SqlParamctcr类2、在数据库上增加一个抽象层次,防止直接对数据库的操作3、在数据库方面,应用程序使用专门的帐户,设置其对应的权限,一定不要用管理员4、避免拼接字符串如果实在没有法要用到拼接,就用SP_EXECUTESQL系统存储过程防止SQL注入例如:SQLcodedeclare@uscridintset@uscrid=1declare@sqlStrnvarchar(1000),@paramnvarchar(400)set@sqlStr=,sel

23、ect*fromtablewhere[userid]=@tuscrid,//这里可以拼接字符串,我这里简单点哈set@param=,@tuseridint,executesp_executesql@sqlstr,@param,@tuscrid=@uscrid//变量替换这种方式的字符串并接就不会有SQL注入的问题。stringsRxStr=@,z(sands)?(sands)?(slikcs)?(sclccts)?(inscrts)?(dclctcs)?(update's[sS]・*sset)?(creates)?(stable)?(<[iframe?/ifra

24、me?script?/script])?(')?(scxcc)?(sdcclarc)?(struncatc)?(smastcr)?(sbackup)?(smid)?(scount),z;明使用存储过程在防止此类攻击有很好的效果,因为通常它会对输入参数进行类型转化,这些参数只可能是字段值,而不会被理解为sql语句中的一部分。此类方法就是在全局Application类的Application_BcginRcqucst方法中对用户输入的数据进行过滤,滤去不应该出现在地址栏中的Sql敏感单词。一、若aps.netI程中没有全局类,则新建一个全局应用程序类;二、为此类添加以下方法,Sq

25、lStr就是要屏蔽的Sql关键字,可以根据需要变化其中内容。privateboolProccssSqlStr(stringStr){boolRcturnValuc=true;tryif(Str!=〃〃)stringSqlStr^select*

26、and,lor*

27、insertinto

28、dclctcfrom

29、altcrtablc

30、update

31、crcatctablc

32、crcatcvicw

33、dropvicw

34、crcatcind

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。