首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 注入與 XSS 跨站腳本攻擊偵測:正則表達式規則庫(上)

     編輯:關於SqlServer

1. 概述

近年來 Web 應用層攻擊頻仍,防火牆與修補機制無法防禦應用程式本身的漏洞。最主流的兩大攻擊向量:

  • SQL Injection:透過輸入欄位注入 SQL 元字元與指令,操控後端查詢。
  • Cross-Site Scripting (XSS):在 URL/輸入植入 <script> 等惡意腳本,誘導受害者點擊,在其瀏覽器執行。

本文系列提供基於 **Snort (PCRE)** 的偵測規則,亦可用於 grep 掃描 Web 伺服器存取日誌 (僅限 GET 請求)。

2. SQL 注入正則表達式規則庫

2.1 SQL 元字元偵測 (基礎/偏執模式)

/(\%27)|(\')|(\-\-)|(\%23)|(#)/ix

解析:

  • (\%27)|(\'):單引號 ' 或 URL 編碼 %27 (MS SQL Server / Oracle 字串結束)
  • (\-\-):雙連字號 -- (SQL 註解開始,瀏覽器不編碼連字號)
  • (\%23)|(#):# 或 %23 (MySQL 註解開始)

Snort 規則:

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS \
(msg:"SQL Injection - Paranoid"; \
 flow:to_server,established; \
 uricontent:".pl"; \
 pcre:"/(\%27)|(\')|(\-\-)|(\%23)|(#)/i"; \
 classtype:web-application-attack; sid:10001; rev:1;)

2.2 針對性規則:單引號 + OR/UNION/關鍵字

單純偵測元字元誤報極高。進階規則組合「單引號 + 攻擊關鍵字」:

  • /' or /i、/' union /i、/' select /i、/' insert /i、/' update /i、/' delete /i、/' drop /i

3. XSS 跨站腳本攻擊偵測基礎

攻擊者常以 <b>、<i>、<script>alert('XSS')</script> 測試。進階手法使用**全字串十六進位編碼**繞過:

<script> → %3C%73%63%72%69%70%74%3E

或透過 Web Proxy (如 Achilles) 自動編碼特殊字元。

規則評估原則

  1. 偏執 vs 精準:極簡規則 (如偵測 < >) 捕捉率 100% 但誤報極高;精準規則需根據業務流量調優。
  2. POST 請求盲區:Web 伺服器存取日誌預設不記錄 POST Body,需配合 WAF/應用層日誌或啟用 mod_dumpio 等模組。
  3. 編碼正規化:偵測引擎必須在 URL 解碼、HTML 實體解碼、Unicode 正規化**前後**皆檢查,防止雙重編碼繞過。
  4. 規則編號管理:建議採用 SID: 10000-19999 區間管理 SQLi 規則,20000-29999 管理 XSS 規則,便於維護。

下篇預告

下篇將詳細提供:

  • 典型 SQLi 正則:' OR、' UNION、MS SQL xp_/sp_ 危險程序偵測
  • XSS 正則:通用標籤、<img src 變種、極端模式
  • Snort 完整規則範例與部署建議
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved