데이터베이스2012. 8. 24. 16:19

문자열 대체(String Substitution)

#{} 문법은 MyBatis 로 하여금 PreparedStatement 프로퍼티를 만들어서 PreparedStatement 파라미터(예를 들면, ?)에 값을 셋팅하도록 할 것이다. 이 방법이 안전하기는 하지만, 좀더 빠른 방법이 선호되기도 한다. 가끔은 SQL 구문에 변하지 않는 값으로 삽입하길 원하기도 한다. 예를 들면, ORDER BY 와 같은 구문들이다.

ORDER BY ${columnName}

여기서 MyBatis 는 문자열을 변경하거나 이스케이프 처리하지 않는다.

 중요 : 사용자로부터 받은 값을 이 방법으로 변경하지 않고 구문에 전달하는 건 안전하지 않다. 이건 잠재적으로 SQL 주입 공격에 노출된다. 그러므로 사용자 입력값에 대해서는 이 방법을 사용하면 안된다. 사용자 입력값에 대해서는 언제나 자체적으로 이스케이프 처리하고 체크해야 한다.

'데이터베이스' 카테고리의 다른 글

Tomcat DBCP를 사용해야 하는 이유  (0) 2012.09.03
Tomcat DBCP 설정법  (0) 2012.09.03
Oracle UTF-8로 설정하기  (0) 2012.08.02
SQL Developer 실행시 오류  (0) 2012.08.01
두 날짜 사이 날짜 구하기  (0) 2012.05.24
Posted by 미랭군