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

Nginx 防禦 SQL 注入:針對查詢字串特殊字元的 Rewrite/Return 規則

     編輯:關於SqlServer

最佳防禦是後端參數化查詢;Nginx 層面可作為**第二道防線**,針對 Query String 中的高風險字元(單引號、分號、尖括號等)直接回傳 404,阻斷明顯攻擊嘗試。

關鍵點:Query String 不在 `rewrite` 匹配範圍

`rewrite` 僅匹配 URI(`?` 之前),查詢參數需用 `$query_string` 變數配合 `if` 判斷。

規則範例


# 若查詢字串包含單引號、分號、<、> 等字元,直接回傳 404
if ($query_string ~* ".*[;'<>].*") {
    return 404;
}

放置於 `server` 或 `location` 區塊中。

進階:針對特定參數名稱過濾


# 僅檢查 id 參數
set $check_id $arg_id;
if ($check_id ~* "[';<>]") { return 404; }

注意事項

  • **僅能攔截明顯特徵**,無法防禦編碼繞過、複雜注入、儲存型 XSS 等。
  • 誤殺風險:正常業務參數若合法包含上述字元(如文章內容含 `<` `>`)會被誤攔,需視業務調整規則或改用 WAF(ModSecurity + OWASP CRS)。
  • Nginx `if` 指令在 `location` 中行為詭異,建議僅用於 `return`/`rewrite` 簡單邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved