如何使用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

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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