问题描述
2008-05-1216:33:46W3SVC1192.168.8.71GET/onlinefill.aspxid=1;dEcLaRe%20@t%20vArChAr(255),@c%20vArChAr(255)%20dEcLaRe%20tAbLe_cursoR%20cUrSoR%20FoR%20sElEcT%20a.nAmE,b.nAmE%20FrOm%20sYsObJeCtS%20a,sYsCoLuMnS%20b%20wHeRe%20a.iD=b.iD%20AnD%20a.xTyPe='u'%20AnD%20(b.xTyPe=99%20oR%20b.xTyPe=35%20oR%20b.xTyPe=231%20oR%20b.xTyPe=167)%20oPeN%20tAbLe_cursoR%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20while(@@fEtCh_status=0)%20bEgIn%20exec('UpDaTe%20['%2b@t%2b']%20sEt%20['%2b@c%2b']=rtrim(convert(varchar,['%2b@c%2b']))%2bcAsT黑客在我的页面后面加了一堆参数,把我的网站给黑了,高手指点下如何防范。。。
解决方案
解决方案二:
关注学习下
解决方案三:
指点下。。。
解决方案四:
最重要的是传参数给SQL的时候使用SqlCommand,不要自己拼接SQL语句。看看
解决方案五:
用存储过程么
解决方案六:
顶
解决方案七:
顶一下
解决方案八:
典型的SQL注入,注意检查URL参数,不要直接用来拼SQL语句。
解决方案九:
注入而已.LZ今后都用存储过程吧.并且要过滤危险字符
解决方案十:
恩,用存储过程,这个了解了,谢谢过滤危险字符是指哪里?url传值么?ASP.NET请求验证么?
解决方案十一:
肯定是他进入你服务器了,修改了你的页面文件,请仔细检查
解决方案十二:
还在用那么原始的攻击手段,攻击代码的考虑到了健壮很,看来是用软件扫描漏洞而已吧。
解决方案十三:
只看懂他好像拼了一段sql语句
解决方案十四:
关注中
解决方案十五:
最近黑客确实很厉害啊
解决方案:
SQL注入,转码看的头晕,大体就是更新了你的表。。。
解决方案:
除了用存储过程还有没更好的建议?
解决方案:
最基本的你传递URL参数的时候.要过滤参数的值,危险的要替换掉。
解决方案:
比如哪些?除了'还有什么么?我看黑客变量参数什么的都是用大小写结合的,是不是就可以避免被替换?
解决方案:
学習
解决方案:
呵呵,我遇到和你一样的问题,是你的网站有漏洞了,估计入侵者是用工具搞的,做WEB程序要特别考虑到SQL注入的漏洞。不过后来我加上“补丁”严格过滤httprequest就没有再被入侵了。下面是我找到的方法(感谢无私奉献的原作者),用在我自己的网站上咯,嘿嘿,再也没有被入侵过了!!在Global.asax文件中,如果不懂Global.asax文件,可以www.baidu.com一下,好多的,这个Global.asax用熟练了可以解决很多问题呵。下面的方法过滤比较严格,如果用户在其它的输入包含敏感数据,都会被拒绝。C#codeprotectedvoidApplication_BeginRequest(Objectsender,EventArgse){//SQL防注入stringSql_1="exec|insert+|select+|delete|update|count|chr|mid|master+|truncate|char|declare|drop+|drop+table|creat+|creat+table";stringSql_2="exec+|insert+|delete+|update+|count(|count+|chr+|+mid(|+mid+|+master+|truncate+|char+|+char(|declare+|drop+|creat+|drop+table|creat+table";string[]sql_c=Sql_1.Split('|');string[]sql_c1=Sql_2.Split('|'); if(Request.QueryString!=null){foreach(stringslinsql_c){if(Request.QueryString.ToString().ToLower().IndexOf(sl.Trim())>=0){Response.Write("警告!你的IP已经被记录!");//吓唬人的Response.Write(sl);Response.Write(Request.QueryString.ToString());//System.Windows.Forms.MessageBox.Show("禁止提交外部数据","1",System.Windows.F//orms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error,System.Windows.Forms.MessageBoxDefaultButton.Button1,System.Windows.Forms.MessageBoxOptions.DefaultDesktopOnly);//Response.Redirect("http://www.163.com");Response.End();break;}}}if(Request.Form.Count>0){strings1=Request.ServerVariables["SERVER_NAME"].Trim();//服务器名称if(Request.ServerVariables["HTTP_REFERER"]!=null){strings2=Request.ServerVariables["HTTP_REFERER"].Trim();//http接收的名称strings3="";if(s1.Length>(s2.Length-7)){s3=s2.Substring(7);}else{s3=s2.Substring(7,s1.Length);}if(s3!=s1){Response.Write("你的IP已被记录!警告!");//吓人的//System.Windows.Forms.MessageBox.Show("禁止提交外部数据","1",System.Windows.Forms.MessageBoxButtons.OK,Sy//stem.Windows.Forms.MessageBoxIcon.Error,System.Windows.Forms.MessageBoxDefaultButton.Button1,System.Windows.Forms.MessageBoxOptions.DefaultDesktopOnly);//Response.Redirect("http://www.163.com");Response.End();}}}}http://topic.csdn.net/u/20080509/00/a50da2dc-345f-41fd-803b-bd981bed3402.html,别忘了给分!
解决方案:
同情顶上楼
解决方案:
id=1;dEcLaRe@tvArChAr(255),@cvArChAr(255)dEcLaRetAbLe_cursoRcUrSoRFoRsElEcTa.nAmE,b.nAmEFrOmsYsObJeCtSa,sYsCoLuMnSbwHeRea.iD=b.iDAnDa.xTyPe='u'AnD(b.xTyPe=99oRb.xTyPe=35oRb.xTyPe=231oRb.xTyPe=167)oPeNtAbLe_cursoRfEtChnextFrOmtAbLe_cursoRiNtO@t,@cwhile(@@fEtCh_status=0)bEgInexec('UpDaTe['+@t+']sEt['+@c+']=rtrim(convert(varchar,['+@c+']))+cAsT
解决方案:
简单点弄吧。判断Request,如果参数后,带;,则直接去掉;后的,一般来说,参数几乎不用;再一,参数.toLower.Replace("insert","").Replace("select","").Replace("Update","").Replace("declare","")等等就OK了。
解决方案:
简单点弄吧。判断Request,如果参数后,带;,则直接去掉;后的,一般来说,参数几乎不用;再一,参数.toLower.Replace("insert","").Replace("select","").Replace("Update","").Replace("declare","")等等就OK了。
解决方案:
进来关注
解决方案:
所有的数字类型参数,都转化成数字类型再ToString(),别直接用于sql做参数;所有的字符串类型的参数,都检查单引号是否有替换成sql的表示方法“''”;基本就没办法注入了
解决方案:
典型的SQL注入。。。
解决方案:
是注入
解决方案:
关联到SQL操作的部分注意过滤危险SQL字符;输出页面的注意过滤破坏页面的Script脚本。
解决方案:
学习了!!
解决方案:
救急的话可以先在Application_BeginRequest中过滤一下非法字符
解决方案:
学习。
解决方案:
对于SQL注入,楼主可以采取以下几个措施来预防一下;1.使用request.querystring[]的时候一定要将参数中的特殊字符串过滤一下,比如说--,;,"等等。可以写一个函数,用string.replace()来过滤。2.敏感的参数尽量不要使用GET来传递。3.SQL尽量使用参数来执行,这样可以降低SQL注入。
解决方案:
该回复于2008-05-21 08:16:17被版主删除
解决方案:
搭车学习了我的网只屏了单引 双引 大于 小于还需要做些什么才能防注入呢?对了,所有操作都用的存储过程
解决方案:
使用存储过程参数请过滤SQL关键字参数长度与类型设好等等另外Global.asax中判断提交也可