MySQL 錯誤日誌大量出現:
ERROR 1064 (42000): You have an error in your SQL syntax ... LIMIT -40, 20
攻擊者構造 page=-1&pageSize=20,導致 $start = (-1-1)*20 = -40,MySQL 不支持負數 OFFSET。
防護代碼(嚴格正整數校驗)
深度防護建議
- 預處理綁定參數:雖然 LIMIT 不能直接綁定,但可綁定 WHERE 條件,構建 SQL 時用
(int)$page強制轉型- 輸入驗證庫:使用成熟驗證組件(如 Symfony Validator、Laravel Validation)
- API 網關/WAF:攔截明顯異常參數(負數、超長、注入特徵)
- 錯誤碼不外露:生產環境關閉詳細 SQL 錯誤返回前端