아파치의 아이바티스 항목의 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 문자를 사용하여 해결하면된다.

크다 > &gt;
작다 < &lt;

Posted by Taoist
,