반응형
SQL 인젝션을 방비하기 위해서는 PreparedStatement를 이용하는 것이 좋습니다.
하지만 문자열로 SQL을 생성 시에는 SQL 조건절의 상수 문자내의 Escape 문자를 변경해야 합니다.
예로 홀따옴표(')의 경우는 홀따옴표를 두개('')로 변환해서 SQL 문자열을 만들어야 하죠.
아파치 프로젝트 중 Common Lang에서 이러한 작업을 할 수 있습니다.
1. Jar 파일을 다운로드하기 위해서 아래의 URL에 방문하세요.
https://commons.apache.org/proper/commons-lang/download_lang.cgi
2. Jar 파일을 다운로드합니다.
3. 클립스 프로젝트에 Jar를 Libraries에 추가하세요.
4. 예제 코드
import org.apache.commons.lang.StringEscapeUtils;
public class SQLInjectionTest {
public static void main(String[] args) {
String userId = StringEscapeUtils.escapeSql("amdin' OR '1'='1");
String sql = "select * from tb_user where id = '" + userId + "'";
System.out.println(sql);
}
}
5. 실행 결과
select * from tb_user where id = 'amdin'' OR ''1''=''1'
※ 아파치의 Common Lang의 StringEscapeUtils에는 XML, HTML, CSV 등의 Escape 문자를 변화하는 메소드도 있어서 유용하게 사용 할 수 있습니다.
반응형
'Java' 카테고리의 다른 글
Java - HTML 문자 Escape 하기 (0) | 2021.02.03 |
---|---|
Java - SQLite 데이터베이스 사용하기 (3) | 2021.02.01 |
Java DecimalFormt의 올림, 내림, 반올림 적용 (0) | 2020.07.16 |
이클립스에 Github 프로젝트 연동하기 (0) | 2019.12.15 |
JavaFX Webstart 배포하기 (1) | 2019.09.05 |
댓글