springframework/mybatis

Mybatis 달러 샵 차이(마이바티스 기초) $, #의 차이

김_나무 2022. 7. 15.
반응형

 

Mybatis $, # 차이점

 

 

개발자가 지정한 SQL 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크

Mybatis에서의 $와 #의 차이를 알아 보겠습니다.

 

 

 1. #
  • PreparedStatement를 의미한다.
  • 파라미터가 String 형태로 들어와 자동적으로(' ') 파라미터 형태가 된다.
  • #{user_email} user_email의 값이 user.gmail.com 이라면 user_email = 'user.gmail.com' 형태가 된다.
  • 쿼리 주입을 예방할 수 있어서 보안 측면에서 유리하다. 

 

security

 

 

 

 2. $
  • Statement를 의미한다.
  • 해당 컬럼의 자료형에 맞추어 파라미터의 자료형이 변경된다.
  • 파라미터가 바로 출력이 된다.
  • 쿼리 주입을 예방할 수 없어 보안측면에서 불리하므로 사용자의 입력을 전달할때는 사용하지 않는 편이 낫다.
  • 테이블이나 컬럼명을 파라미터로 전달하고 싶을 때 사용된다.
  • ${}을 사용할 경우에 SQL Injection 보안 위험을 발생하는 경우가 발생한다.

 

 

vulnerability

 

반응형

댓글

💲 추천 글