欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

sqlserver防止数据库挂马新尝试

程序员文章站 2022-04-21 12:27:06
...

想法不错,放着以后应该会有用 网站挂马非常让人头痛,每次的安全措施都是治标不治本,想找到根本原因,只能去分析你的程序源代码,由于很多网站不是一个程序员开发,很多的注入漏洞很难发现,曾经通过公共文件加入过滤代码,基本无效,买了个叫龙盾的IIS防火

想法不错,放着以后应该会有用

网站挂马非常让人头痛,每次的安全措施都是治标不治本,想找到根本原因,只能去分析你的程序源代码,由于很多网站不是一个程序员开发,很多的注入漏洞很难发现,曾经通过公共文件加入过滤代码,基本无效,买了个叫龙盾的IIS防火墙,好像有点用,但最后还是被攻破了,sqlserver又被挂了。

  每次注入都要用“UPDATE 表名 set 字段名= REPLACE(字段名,

  网站挂马非常让人头痛,每次的安全措施都是治标不治本,想找到根本原因,只能去分析你的程序源代码,由于很多网站不是一个程序员开发,很多的注入漏洞很难发现,曾经通过公共文件加入过滤代码,基本无效,买了个叫龙盾的IIS防火墙,好像有点用,但最后还是被攻破了,sqlserver又被挂了。

  每次注入都要用“UPDATE 表名 set 字段名= REPLACE(字段名,'木马地址','')”最后一个引号真想写去死吧!

  我们不能阻止住它往数据库里挂木马,但是总有方法我们可以让它挂不成功。最后想到了触发器。熟悉触发器的都知道,sql2000插入数据和修改数据其实都是先放在inserted临时表里,然后才实际去放到对应表里。阻击黑客的脚步就这个临时表里。

  下面是一段触发器的代码,暂时对木马注入起到一定的作用。

  CREATE trigger 触发器名

  on 表名

  for update,insert

  as

  declare @a varchar(100) --存储字段1

  declare @b varchar(100) --存储字段2

  declare @c varchar(100) --存储字段3

  select @a=字段1,@b=字段2,@c=字段3 from inserted

  if(@a like '%script%' or @b like '%script%' or @c like '%script%')

  begin

  ROLLBACK transaction

  end

  这段触发器的意思是,先定义三个变量,分别存储放在inserted表里的三个容易被黑客下手的字符串型字段,然后用like模糊判断值中是否含有script字样,如果有,就回滚事务,不报错,以麻痹黑客,让他误以为已经挂好马了。各位被挂马的朋友可以把这段脚本拿去,对应着修改,应该可以保证网站不被挂马。另外容易被挂马的字段还有text型,但是这个类型处理比较麻烦点,而且观察发现黑客挂一个表往往是好几个字段同时挂,所以只要一个字段不成功,整个表都是不成功的。