아파치의 아이바티스 항목의 FAQ항목을 잘 보자
How do I configure a Jakarta DBCP-datasource?
1. iBatis의 DBCP 설정방법
1) SqlMapConfig.xml의 태그요소에 DBCP에 알맞도록 지정
2) DBCP 구현에 필요한 두개의 jar를 다운로드 받아 WEB-INF/lib에 넣자
(commons-dbcp.jar & commons-pool.jar)
2. iBatis의 인라인 파라미터 설정시 알아둘 사항
#(해시)를 사용한 방법의 의미
(asp에서는 select * from emp 이쿼리를 문자열로 처리한다 위험한 방법
dim sql
sql="select * from emp"
con.execute sql
보안에 취약 sql문에 "select * from emp; drop table board--"
해커가 저런식으로 처리(인젝션)
asp는 인젝션을 처리해줘야 한다.
jsp는 바인딩기법으로 보안이 처리가 된다. 인젝션 불가
)
select * from emp where ename='$str$'
return sqlMapper.queryForList("selectAllEmp","SCOTT;drop table ~~");
이런식으로 iBatis에서도 해킹이 가능
그래서 #으로 설정하는 인라인 파라미터 설정
#(해시)를 쓰게 되면 내부 적으로 PreparedStament가 생성되어 해킹이 불가능하다
결국 injection이 해결된다.
3. like 문의 처리시 방법 및 injection 문제
where ename like '%'||#str#||'%'
pstmt.setString(1,"SCOTT");
'%'||#str#||'%' 이런식으로 DAO에서의 바인드 변수 처리와 크게 다르지 않다
4. sql문 연산자의 사용중 xml태그와 충돌날 가능성이 있는 문자인 < 대체 방법
<는 xml 태그의 시작을 의미한다 그래서 <를 문자요소로 생각하게 만들어야 한다.
html의 escape 문자를 사용하여 해결하면된다.
크다 > >
작다 < <