본문 바로가기
Java

Java SQL 인젝션(SQL Injection) 해킹 방지를 위한 Escape 문자 변환 방법

by Dokon Jang 2021. 1. 22.
반응형

 

SQL 인젝션을 방비하기 위해서는 PreparedStatement를 이용하는 것이 좋습니다.
하지만 문자열로 SQL을 생성 시에는 SQL 조건절의 상수 문자내의 Escape 문자를 변경해야 합니다.
예로 홀따옴표(')의 경우는 홀따옴표를 두개('')로 변환해서 SQL 문자열을 만들어야 하죠.

아파치 프로젝트 중 Common Lang에서 이러한 작업을 할 수 있습니다.


1. Jar 파일을 다운로드하기 위해서 아래의 URL에 방문하세요.

 

https://commons.apache.org/proper/commons-lang/download_lang.cgi

 

Lang – Download Apache Commons Lang

Download Apache Commons Lang Using a Mirror We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hour

commons.apache.org

 

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 문자를 변화하는 메소드도 있어서 유용하게 사용 할 수 있습니다.

반응형

댓글