IBatis 동적 쿼리 작성시 취약점 방어 가능한지
- 작성자 :
- 이*원
- 작성일 :
- 2024-08-20 14:47:17
- 조회수 :
- 108
- 구분 :
- 적용지원(기술지원)
- 진행상태 :
- 완료
Q
안녕하세요?
전자정부프레임워크 4.1 환경에서 IBatis 사용 환경입니다.
XML 내 SQL을 동적으로 만들어 사용하고 싶습니다.
즉, Query 문을 동적으로 문자열로 만들어 사용하고 싶어 "$"를 사용하여 문자열을 만들었는데,
이경우 "$"를 쓰면 SQL Injection 취약점이 발생할 수 있다고 "개발 보안 가이드"에서 안내하고 있습니다.
(첨부 그림 참고)
(질문)
전자정부프레임워크 4.1 , iBatis 환경에서 "$"를 사용하면 보안에 취약한지
즉, 전자정부프레임워크 4.1은 이런한 경우 방어 기능이 있는지 알고싶습니다.
감사합니다.
답글 부탁드립니다.
전자정부프레임워크 4.1 환경에서 IBatis 사용 환경입니다.
XML 내 SQL을 동적으로 만들어 사용하고 싶습니다.
즉, Query 문을 동적으로 문자열로 만들어 사용하고 싶어 "$"를 사용하여 문자열을 만들었는데,
이경우 "$"를 쓰면 SQL Injection 취약점이 발생할 수 있다고 "개발 보안 가이드"에서 안내하고 있습니다.
(첨부 그림 참고)
(질문)
전자정부프레임워크 4.1 , iBatis 환경에서 "$"를 사용하면 보안에 취약한지
즉, 전자정부프레임워크 4.1은 이런한 경우 방어 기능이 있는지 알고싶습니다.
감사합니다.
답글 부탁드립니다.
환경정보
-
- OS 정보 : 개발 환경-Windows, 서버 환경-Red Hat 계열
- 표준프레임워크 버전 : 4.1
- JDK(JRE) 정보 : 1.8
- WAS 정보 : Zeus
- DB 정보 : Oracle 12c 이상
- 기타 환경 정보 :
A
안녕하세요
표준프레임워크센터입니다.
"$"의 경우 Statement를 생성하여 변수값이 문자열로 치환돼
문자열 조합으로 파싱이 되어 SQL Injection의 위험이 있지만
"#"을 사용하는 경우 PreparedStatement를 생성하여
주입된 값의 특수문자를 자동으로 파싱해 SQL Injection을 방지합니다.
따라서
"$"를 이용하여 동적쿼리를 작성하지 않아야 하며
부득이한 경우
들어갈 구문에 대해
반드시 SQL Filter를 지정해 구문를 필터링하시거나
WhiteList 처리를 하여 사용하셔야 합니다.
다만, 이부분에 대해 업무적으로 다양하게 구현이 될수 있기 때문에
직접적으로 가이드 하지는 않고 있으며
직접 구현하셔야 합니다.
SQL Injection과 관련하여 Statement가 생성되는 동적쿼리의 문제점에 대한 자세한 사항은
한국인터넷진흥원 > 소프트웨어 보안약점 진단가이드 > 구현단계 보안약점 진단 > 1.SQL 삽입
부분을 참고하시기 바랍니다.
https://www.kisa.or.kr/2060204/form?postSeq=9&page=1#fndoDocumentPreview
감사합니다.
표준프레임워크센터입니다.
"$"의 경우 Statement를 생성하여 변수값이 문자열로 치환돼
문자열 조합으로 파싱이 되어 SQL Injection의 위험이 있지만
"#"을 사용하는 경우 PreparedStatement를 생성하여
주입된 값의 특수문자를 자동으로 파싱해 SQL Injection을 방지합니다.
따라서
"$"를 이용하여 동적쿼리를 작성하지 않아야 하며
부득이한 경우
들어갈 구문에 대해
반드시 SQL Filter를 지정해 구문를 필터링하시거나
WhiteList 처리를 하여 사용하셔야 합니다.
다만, 이부분에 대해 업무적으로 다양하게 구현이 될수 있기 때문에
직접적으로 가이드 하지는 않고 있으며
직접 구현하셔야 합니다.
SQL Injection과 관련하여 Statement가 생성되는 동적쿼리의 문제점에 대한 자세한 사항은
한국인터넷진흥원 > 소프트웨어 보안약점 진단가이드 > 구현단계 보안약점 진단 > 1.SQL 삽입
부분을 참고하시기 바랍니다.
https://www.kisa.or.kr/2060204/form?postSeq=9&page=1#fndoDocumentPreview
감사합니다.