我用一些SQL語句在視圖中在Web應用程序中使用playframework.I開發具有以下Java函數是我的SQL查詢容易受到SQL注入或其他攻擊
public static void search(String word){
String trimword = word.trim();
String pattern = "%"+trimword+"%";
String query="select distinct item from Item item where item.name like :pattern";
List<Item> items = Item.find(query).bind("pattern", pattern).fetch();
...
}
的「字」是一個字符串用戶通過網頁形式的文本輸入字段輸入......可以將上述情況誤用於惡意人員,以便對我的db做惡劣的事情嗎?我嘗試過各種用戶輸入組合,例如'SomeItem or '1'='1'
等,但沒有任何意外發生..但是我的sql的知識是最小的。如果任何人都可以指出這個漏洞,並提出改進/保護措施,那將是有幫助的
如果用戶輸入'1;從用戶刪除 - 「? – JNK
@JNK在第三個查詢中,需要調用「Item.find(query).bind(」pattern「,pattern).fetch();」。 bind()方法將處理轉義和防止SQL注入。 – Ryan