外网服务器 上数据库 遭到攻击
数据库库的数据被修改,,,修改的是在表的每个字段内容后面加上一段代码,代码是什么什么贷款的链接,还是一个全英文的网站。
一次次的将我们数据改了,,改回来,要被改了,郁闷死了,,
一开始给机器换了一个密码,,还是木用,
数据库用的是sa用户,想要改sa的密码,上面说暂时不让该。。
数据就这样一次次被改。。
是用什么方式攻击我们,,脚本注入还是连上我们的数据库?
从被修改的字段和表的内容来看,,很有可能是脚本注入,,注入的字段是在后台程序中添加修改的内容。
还在数据库里新建了两个表,表都是在凌晨创建的,呜呜。。。,表字段中值是没有任何意义混乱的字符。
彻底杜绝SQL注入
1.不要使用sa用户连接数据库
2、新建一个
public
权限数据库用户,并用这个用户访问数据库
3、[角色]去掉角色
public
对sysobjects与syscolumns对象的
select
访问权限
4、[用户]用户名称-> 右键-属性-权限-在sysobjects与syscolumns上面打“×”
5、通过以下代码检测(失败表示权限正确,如能显示出来则表明权限太高):
DECLARE
@T
varchar
(255),
@C
varchar
(255)
DECLARE
Table_Cursor
CURSOR
FOR
Select
a.
name
,b.
name
from
sysobjects a,syscolumns b
where
a.id=b.id
and
a.xtype=
'u '
and
(b.xtype=99
or
b.xtype=35
or
b.xtype=231
or
b.xtype=167)
OPEN
Table_Cursor
FETCH
NEXT
FROM
Table_Cursor
INTO
@T,@C
WHILE(@@FETCH_STATUS=0)
BEGIN
print @c
FETCH
NEXT
FROM
Table_Cursor
INTO
@T,@C
END
CLOSE
Table_Cursor
DEALLOCATE
Table_Cursor
1 还有 前台提交表单的时候 对非法字符进行过滤 。。。 参数用SqlParameter 过滤字符
2:那如果我们的sql数据库被批量注入代码要如何来清除呢?如果挨个的表去删除,那估计会把你累吐啊!这里可以分享一下批量清除sql数据库被注入的代码的方法:如果是sql server数据库,可以远程链接到数据库,使用查询分析器运行“update 数据库表 set 表的键值=replace(cast(表的键值 as varchar(8000)),'被注入的代码',' ')”这段代码就可以了,但是也要挨个表的去清除!select replace('love1 is love1,it come from heart','love1',' love2')
太长的字符 替换难匹配
3:过滤特殊输入字符,搜索框禁止用户输入特殊字符, 改变数据库服务器还是被攻击。
4 http请求过滤参数