畫面看起來完全不像資安攔截,這才是最麻煩的地方。
客戶的網站後台儲存文章時突然跳 404。第一反應通常是網址壞掉、外掛衝突或主機出問題,但這次查下去,問題出在文章內容本身。
最可疑的地方:FAQ 裡原封不動放了一段 PHP 錯誤訊息
文章裡的 Q11,內容原封不動貼了一段:
這類包含syntax error、unexpected、T_VARIABLE、特殊符號的內容,很容易被 WAF(Web Application Firewall)或 ModSecurity 判定成程式碼注入探測或錯誤訊息洩漏,直接觸發攔截規則。
結果是:文章內容沒問題,後台操作也正常,但按下儲存的那一刻,POST 請求直接被防火牆擋掉,畫面上只看到一個很像 404 的攔截頁。不會有紅字警告,不會提示「這是資安攔截」,看起來就是一個普通的網址錯誤。
另外兩個要一起檢查的地方
標籤。
檔案大小限制。這篇文章約 47KB,通常不至於超過 post_max_size 的預設限制,但如果主機有客製化的欄位長度限制,也不能完全排除這個可能性,排查時順手確認一下。
這次怎麼處理的
先把容易觸發 WAF 的錯誤訊息內容改寫(例如拆開特殊符號、避免完整還原成看起來像程式碼片段的格式),再重新儲存測試,問題排除。
如果重新儲存還是失敗,照這個順序查
- 先用 Super User 帳號測試,排除權限問題
- 檢查 Joomla 的文字篩選器設定,確認允許的標籤範圍
- 查 Cloudflare 或主機端 WAF 的攔截紀錄,確認是不是真的被擋
- 最後才查快取、CDN、文章別名(Alias)重複這類比較常見但這次不是主因的問題
把資安攔截排在權限和文字篩選器之後,是因為多數情況下 404 真正的原因還是比較單純的設定問題。但如果前面幾項都排除了,內容裡有沒有貼到不該貼的技術訊息,就該優先懷疑。
結論
網站後台出現 404,有時候真正被擋的不是網址,而是你貼進文章裡的某一行文字。技術文章、錯誤訊息截圖、程式碼片段這類內容,貼進 CMS 之前最好先想一下:這段文字看起來像不像攻擊探測?寧可多一道轉換或說明文字,也不要讓防火牆誤判擋在儲存那一關。

