PostgreSQL 中未驗證使用者輸入的LIKE 表達式的文字模式比對
將使用者輸入與PostgreSQL 中的LIKE 模式進行比對時,必須轉義特殊模式字元(例如“_”和“%”)可確保字面匹配。 PostgreSQL 要求使用反斜線 () 或使用 ESCAPE 子句定義的自訂轉義字元來引用這些字元。
例如,要按字面匹配“rob”,您需要轉義任何包含下劃線或百分號。但是,這裡存在一個潛在的陷阱:如果您的使用者輸入也包含反斜杠,則它們也需要轉義。這可能會變得複雜並導致錯誤。
伺服器端解決方案
為了優雅地處理這個問題,您可以利用 PostgreSQL 的 Replace() 函數將特殊字元替換為它們的值逃脫版本。這種方法有幾個優點:
例如,要按字面搜尋“rob”,您可以使用以下查詢:
在此查詢中:
結論
透過使用伺服器端替換和自訂轉義字符,您可以確保文字模式匹配在PostgreSQL 中,LIKE 表達式用於未經驗證的使用者輸入。這種方法非常穩健,避免了注入漏洞,並簡化了程式碼。
以上是如何使用未經驗證的使用者輸入在 PostgreSQL LIKE 表達式中實作文字模式比對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!