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

使用 mod_security 保護 Web Services 安全(二):規則實戰

     編輯:Java 相關知識

場景

Blue Bank 暴露 www.bluebank.example.com/axis/getBalance.jws,需防範 SOAP 請求中的惡意輸入。

Location 級規則隔離

<Location /axis/getBalance.jws>
    SecFilterInheritance Off
    SecFilterDefaultAction "deny,log,status:500"
    SecFilterScanPOST On
    SecFilterCheckURLEncoding On
    SecFilterCheckUnicodeEncoding On
    # 具體規則...
</Location>
  • SecFilterInheritance Off:關閉繼承規則,建立乾淨規則空間。
  • SecFilterScanPOST On:啟用 POST Body 檢查(Web Services 走 POST)。

攻擊一:緩衝區溢出(長度限制)

SecFilterSelective POST_PAYLOAD "<\s*id[^>]*>" chain
SecFilterSelective POST_PAYLOAD "<\s*id[^>]*>.{6,}" "deny,status:500"

限制 <id> 內容長度 ≤ 5 字符。測試:12123 通過,121234 返回 500,請求未達到 Web Service 層。

攻擊二:元字符注入(SQL 注入預防)

SecFilterSelective POST_PAYLOAD "<\s*id[^>]*>[%'\\\"]" "deny,status:500"

攔截包含 %、單引號、雙引號、反斜槓的 id 值。

攻擊三:惡意 XML 結構(實體擴展/外部實體)

SecFilterSelective POST_PAYLOAD "<!ENTITY" "deny,status:500"
SecFilterSelective POST_PAYLOAD "<!DOCTYPE" "deny,status:500"

防範 XML 實體注入攻擊(Billion Laughs、XXE)。

攻擊四:SOAP Action 掃描

SecFilterSelective SOAPAction "!^\"https://bluebank.example.com/axis/getBalance\"$" "deny,status:500"

僅允許預期的 SOAPAction,阻斷未知調用。

效果總結

mod_security 作為「護盾」部署在 Apache 前端,攔截惡意請求於 Web Service 容器之前,零代碼入侵業務邏輯,集中管理安全策略。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved