如何使用MysqlIDS抵御针对WEB的攻击

在Web安全领域中,针对web漏洞发起的SQL注射攻击是最为常见的,为了减少SQL注入漏洞对各大企业及网站的影响,我们可以使用MysqlIDS这种脚本类的IDS做出更快更有效的防御。

现在流行的技术大部分是旁路监听,一般不会因为IDS的性能影响网站正常的访问流量,而使用MysqlIDS也是按照类似的思路同样不会影响程序的性能。MysqlIDS存在于应用程序和数据库操作之间的一个环节,完全以数据库的语法来分析执行的SQL语句,而不是采用传统的关键字检测的方法,对于一些非正常的SQL语句能进行阻止并且记录相关的信息,这样就可以很快地定位程序中存在注射漏洞的地方,为漏洞的及时修复提供必要的信息。

使用MysqlIDS原理

MysqlIDS是由PHP编写的,通过一个封装的安全函数,监测程序中运行的SQL查询语句,针对黑客经常使用的union查询、select子查询、不常用的SQL注释符、文件操作和benchmark等危险函数行为进行报警,这个IDS是无缝封装在程序里的数据库操作流程里的,也就是黑客通过程序漏洞进行恶意的SQL注射都能被非常详细的监测到,程序员或者网站站长甚至能使用IDS发现自己网站程序中未被察觉的0DAY漏洞。下面我就分析MysqlIDS的部分代码,使大家可以从原理上更容易的理解MysqlIDS,我们看看MysqlIDS如何监测黑客SQL注入经常使用的恶意的联合查询。部分代码如下:

if (strpos($clean, ‘union’) !== false && preg_match(‘~(^|[^a-z])union($|[^[a-z])~s’, $clean) != 0){

$fail = true;

$error=”union detect”;

}

MysqlIDS使用了PHP中strpos函数来判断程序执行的SQL语句是否存在恶意的SQL注射,这个函数可以高效率的查找指定字符串返回一个布尔值,当程序执行SQL语句中使用联合查询,规则条件就开始生效,启用preg_match函数调用IDS规则来匹配恶意的联合查询语句,这个IDS规则是精心构造的正则表达式,类似于大家使用的传统IDS规则,由于MysqlIDS是在程序的数据库操作层来检测,所有能抓取到有效且实实在在的安全问题,且更有效更具有针对性。MysqlIDS还针对程序运行的SQL语句出现的异常情况进行了监控,如SQL语句中出现异常的注释符,一般黑客进行SQL注射攻击,很多情况下需要注释符完成SQL注射攻击的SQL语句,同时黑客还有可能使用一些比较危险的MYSQL函数和功能,如sleep、benchmark、load_file和into outfile功能等,这些黑客在程序中使用SQL注射的恶意动作都能被MysqlIDS监测到。

使用MysqlIDS与使用传统Web安全防御措施的区别

传统的Web安全防御措施都非常滞后,在Web程序里未知的漏洞被攻击的情况下,管理员往往要排查很多东西才能找到问题的关键点,有的时候可能是使用的程序中存在一个未知的SQL注射漏洞被黑客利用,却无法确定黑客是如何攻击,而导致整个网站一而再,再而三的沦陷。合理地部署MysqlIDS后,就可以帮助管理员第一时间准确的定位网站的Web程序漏洞,关键在于MysqlIDS核心的日志功能,它能准确的将每次精确匹配报警后的信息存入日志,代码如下:

if (!empty($fail))

{

fputs(fopen($log_file,’a+’),”||$db_string||$errorrn”);

die(“Hacking Detect

[url]http://www.80sec.com[/url]”);

}

else {

return $db_string;

}

}

当程序的SQL语句被监测到恶意行为后,会打开相应条件语句里的fail开关,也就是触发监测后根据信息会留下一条精确的日志信息。管理员排查日志就能精确定位程序中的SQL注射漏洞。

如何部署MysqlIDS

可以使用MysqlIDS的Web程序暂时只支持PHP+MYSQL架构,作为开源程序和其原理的灵活性,大家可以很方便将MysqlIDS和自己程序无缝结合。比如国内站长采用比较广泛的一款PHP建站程序DeDecms,在DeDecms历史版本中被披露过很多安全问题,其中SQL注射是其安全问题中危害最大也最多的问题。为了解决SQL注射问题,DedeCms在其发布的最新版中的数据库类中封装了80sec的MysqlIDS,以用来抵御和检测Sql注射漏洞。我们可以参考DeDecms的MYSQL数据库类,将MysqlIDS部署在程序中:

includededesql.class.php

DeDecms的MYSQL数据库类161行的ExecuteNoneQuery函数封装了MysqlIDS,程序运行的SQL语句在进入MYSQL查询之前都会使用MysqlIDS的CheckSql函数处理。

if($this->safeCheck) CheckSql($this->queryString,’update’);

return mysql_query($this->queryString,$this->linkID);
 

【编辑推荐】

  1. 如何构建入门级IDS
  2. IDS漏洞分析与黑客入侵手法
  3. 测试评估IDS的性能指标
  4. 正确评估IDS性能的标准与步骤
  5. 企业测试IDS的四条重要标准

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/135348.html<

(0)
管理的头像管理
上一篇2025-03-01 14:06
下一篇 2025-03-01 14:08

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注