我有一個LIKE子句使用%
通配符的SQL查詢。 我讀過LIKE子句可能有問題,如下所示:http://githubengineering.com/like-injection/。 但我不確定在某些用戶輸入(儘管查詢本質上是相同的)下面的兩個不同的函數調用之間會有性能差異,並且它們之間的差異與所討論的鏈接。使用LIKE子句正確格式化sql查詢
我預計對第一個函數的調用只會返回類似於「& my-query%」的結果,因此字面上用戶的輸入會被兩個百分號表示,但事實並非如此。
(query db ["SELECT * FROM some_table WHERE some_value LIKE ?"
(str "%" user-input "%")])
(query db ["SELECT * FROM some_table WHERE some_value LIKE '%' ? '%']"
user-input])
任何字符串串聯涉及用戶輸入構建SQL是一個安全隱患 - 總是用準備好的語句設置用戶提供的參數。 – BarrySW19