2011-11-28 6 views
0

EJB 쿼리에서 SQL 주입 공격을 피하기 위해 문자열 매개 변수를 연결하는 대신 setParameters()를 사용하는 것이 좋습니다.EJB 쿼리에서 ''안에 매개 변수를 설정하는 방법

내 질문은 : 'SET'와 SQL 업데이트 문에서 ''내에서 매개 변수를 설정하는 방법 :

String basicQuery = "update some table set somecolumn = ':para'"; 
Query query = em.createQuery(basicQuery); 
query.setParameters("para", someString); 

런타임은이 매개 변수 "파라"를 찾을 수 없습니다 뿌려줍니다. 모든 해결 방법을 주시면 감사하겠습니다.

답변

0

:para 주위의 작은 따옴표를 삭제하십시오.

+0

이 답변은 단지 | _ | "명명 된 매개 변수를 사용할 때 따옴표가 필요하지 않으며 구문을 방해하는 것입니다"라고 말하면 훨씬 더 좋습니다. "제거"라고 말하면됩니다. –

+0

따옴표가 없으면 SQL 구문 오류가 발생합니다. – Wangge

+0

아니요 - SQL을 작성하지 않습니다. 추상적 인 EJBQL (또는 JPAQL)을 작성 중입니다. ': para'는 명명 된 매개 변수 ("para")의 구문이고'setParameter'는 이름과 값을 취하며 JPA 구현은 입력을 삭제하고 따옴표를 추가합니다. –

관련 문제