2012/10/24 16:09

myBatis 이용한 SQL Injection 해결. ORM/myBatis



보안이 급 이슈가 되고 있는 지금..
내부 시스템의 경우, 그렇게 민감하지 않지만
외부 사용자에게 공개되는 시스템들은 보안에 무척 민감하다.

해서, 우리회사도 보안 체크리스트를 이용해서 보안 담당자들이
점검을 하는데, 프레임워크에서도 어플리케이션 쪽 보안에 
util class를 이용해서 필터링, 암호화 등을 지원하고 있다. 

그중, SQL Injection이라는 놈이 있는데,
간단히 말하자면 검색조건에 DB 질의어를 넣어서,
DB NAME 등을 알아내는 해킹 방법인데.. 

그거를 위해서는 보통, 필터링 방법을 사용한다. 

그래서 securityUtil이라는 클래스에서 그 필터링을 지원하고 있었는데,
오늘 알아본 바. myBatis라는 ORM 도구를 사용하면 한방에 해결.

mybatis를 이용해서 SQL 작성시, 파라미터 매핑은 #{} / ${} 두가지 방법을 사용할 수 있는데.
전자는 파라미터 데이터를 ''로 묶어주는 방식이고, 
후자는 값이 직접 매핑되는 형식이다. 
즉, 전자는 parameterStatement 방식이라고 생각하면 되겠다.

따라서, ORM으로 mybatis를 사용하고, 파라미터를 #{}를 이용해서 처리했다고 하면, 
SQL Injection은 어느정도 해소되었다고 생각해도 무방할 것 같다..

참고사이트.. 

덧글

  • 지나가다 2018/12/19 11:25 # 삭제 답글

    mybatis를 이용해서 SQL 작성시, 파라미터 매핑은 #{} / ${} 두가지 방법을 사용할 수 있는데.
    전자는 파라미터 데이터를 ''로 묶어주는 방식이고,
    후자는 값이 직접 매핑되는 형식이다.
    -----------------------------

    내용 오류가 보여 정정요청합니다.
    #을 쓰는 전자의 방식은 타입추정을 통해 따옴표를 붙이기도 하고 안붙이기도 합니다.
댓글 입력 영역