1. 개요

Prepared Statement SQL 구문이 미리 컴파일 되어 있어 입력값을 변수로 선언해 두고 필요에 따라 값을 대입하여 처리하는 방식입니다.

 

2. Statement & Prepared Statement

1) Statement

SELECT문은 DBMS 내부적으로 4단계의 과정(parse, bind, execute, fetch)을 거쳐서 출력하게 됩니다.

 

Statement 4단계의 과정을 매번 수행합니다. 그렇기에 입력 값에 영향을 미치는 문자나 구문이 들어 갓을 경우 SQL Injection 공격으로 이어질 수 있습니다.

parse – 문법 검사, 의미 검사, 권한 검사, 실행 계획

bind – 입력 값 변수 선언

execute – 실행

fetch – 원하는 데이터 추출

 

2) Prepared Statement

Prepared Statementparse 과정을 최초 회만 수행한 후 결과를 메모리에 저장해 필요할 때 마다 사용합니다. Statement에 비해 시간을 단축 할 수 있습니다.

SQL구문이 미리 컴파일 되어 사용자 입력 값을 변수로 선언해 값을 대입하여 사용합니다. 그렇기에 외부 입력값으로 SQL문에 영향을 끼치지 못 합니다.

 

3) Statement 코드 & Prepared Statement 코드

-Statement code

String sql = "SELECT * FROM MEMBER WHERE ID = '"+id+"'AND PW = '"+pw"'";

 

-Prepared Statement code

PreparedStatement pstmt = null;

String sql = "SELECT * FROM MEMBER WHERE ID = ? AND PW = ?";
pstmt.setString(1, id);
pstmt.setString(2, pw);

 

3. Prepared Statement 유의점

반드시 반인딩 처리를 통해 외부 입력 값이 문법적 의미를 갖지 않도록 해야 합니다.

 

4. 참조

https://www.skshieldus.com/download/files/download.do?o_fname=EQST%20insight_Special%20Report_202209.pdf&r_fname=20220926092447242.pdf

'기술 노트 > database' 카테고리의 다른 글

[database] MySQL 정보 탐색  (0) 2025.01.24
[database] PostgreSQL 정보 탐색  (0) 2025.01.24
[database] MSSQL 정보 탐색  (0) 2025.01.24
MySQL 설치하기  (0) 2024.05.13

+ Recent posts