萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 資訊安全防護

善用腳本型 IDS (MysqlIds) 抵禦 Web 攻擊:原理、部署與實戰

IDS(入侵偵測系統)傳統為旁路監聽設備,透過規則比對封包特徵偵測攻擊。開源 Web 程式中 SQL Injection 為最嚴重且高發漏洞。80SEC 於 2008 年推出國內首款腳本型 IDS —— MysqlIds,專為 PHP+MySQL 架構設計,置於應用程式與資料庫操作之間,以資料庫語法分析 SQL 語句(非傳統關鍵字比對),精準攔截異常查詢並記錄詳細資訊,助管理者快速定位漏洞位置,甚至發現 0-day 漏洞。

核心原理:封裝安全函數攔截 SQL 執行

MysqlIds 以 PHP 撰寫,透過封裝的安全函數監測程式執行的 SQL 查詢,針對駭客常用手法報警:
• UNION 聯合查詢
• SELECT 子查詢
• 非常用 SQL 註解符號
• 危險函數:sleep、benchmark、load_file、into outfile

程式碼片段示範 UNION 偵測邏輯:

if (strpos($clean, 'union') !== false && 
    preg_match('~([^a-z])union($|[^a-z])~s', $clean) != 0) {
    $fail = true;
    $error = "union detect";
}

strpos 高效率初篩,preg_match 精準正則比對,避免誤判。同理偵測註解符、危險函數等異常行為。

優於傳統 Web 防禦的關鍵:精準日誌定位漏洞

傳統防禦滯後,未知漏洞被攻擊時難以溯源。MysqlIds 核心日誌功能於偵測到惡意行為時記錄完整 SQL 語句與錯誤類型:

if (!empty($fail)) {
    fputs(fopen($log_file, 'a+'), "$db_string$error\r\n");
    die("Hacking Detect https://www.80sec.com");
}
return $db_string;

管理者檢視日誌即可精準定位程式碼中 SQL 注入漏洞位置,大幅縮短應變時間。

部署範例:整合至 DedeCMS

DedeCMS 歷版本 SQL 注入漏洞頻出,最新版已內建 MysqlIds 於資料庫類別中。參考其做法:於資料庫操作類別的查詢執行前呼叫 MysqlIds 安全函數,即可無縫整合至任意 PHP+MySQL 專案。

copyright © 萬盛學電腦網 all rights reserved