时间: 2021-07-31 作者:daque
那些天,csdn上计划sql注入报复犹如是热火朝天啊...我也来参合一下..如次,checkparams因变量,接受参数大肆,如参数中有字符串,则对字符串举行查看,如参数中有汇合(如array之类,总之是实行了icollection的),则对汇合中的字符串元素举行查看.大师可按照简直情景来定要过滤的字符,我这个例子里暂定于=号和'号,本质上我部分觉得,过滤了这两个,犹如要举行sql注入就仍旧比拟艰巨了,固然,我对sql是菜鸟,欢送能手教正,感谢.我的邮箱(msn): appledotnet@hotmail.combool checkparams(params object[] args){ string[] lawlesses={"=","'"}; if(lawlesses==null||lawlesses.length<=0)return true; //结构正则表白式,例:lawlesses是=号和'号,则正则表白式为 .*[=}'].* (正则表白式关系实质请见msdn) //其余,因为我是想做通用并且简单窜改的因变量,以是多了一步由字符数组到正则表白式,本质运用中,径直写正则表白式亦可; string str_regex=".*["; for(int i=0;i< lawlesses.length-1;i++) str_regex+=lawlesses[i]+"|"; str_regex+=lawlesses[lawlesses.length-1]+"].*"; // foreach(object arg in args) { if(arg is string)//即使是字符串,径直查看 { if(regex.matches(arg.tostring(),str_regex).count>0) return false; } else if(arg is icollection)//即使是一个汇合,则查看汇合内元素能否字符串,是字符串,就举行查看 { foreach(object obj in (icollection)arg) { if(obj is string) { if(regex.matches(obj.tostring(),str_regex).count>0) return false; } } } } return true;}