내 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()'메쏘드는 escaping과 SQL injection을 방지합니다. – Ryan