🔌 JDBC란?
Java 애플리케이션에서 데이터베이스와 통신하기 위한 표준 인터페이스(API)
→ CRUD 작업을 Java 코드로 수행할 수 있게 해 줌
📐 JDBC 구조

Java Application ↔ JDBC API ↔ JDBC Driver ↔ DBMS ↔ Database
📌 JDBC 특징
| 기능 | 설명 |
|---|---|
| 표준 API | Oracle, MySQL 등 모든 RDBMS와 통일된 방식 사용 가능 |
| 연결 관리 | DriverManager를 통해 DB 연결 |
| SQL 실행 | Statement / PreparedStatement로 SQL 실행 |
| ResultSet 처리 | 결과를 Java 객체로 받아 처리 |
| 트랜잭션 제어 | commit(), rollback() 등으로 DB 작업 제어 |
✍️ Statement vs PreparedStatement
- 데이터베이스와의 통신을 통해
쿼리 결과를 반환하거나 데이터 조작을 수행하는 데 사용
1. Statement
Statement stmt = conn.createStatement();
ResultSet rs = stmt.execute("SELECT * FROM users WHERE name = 'Alice'");

2. PreparedStatement
String query = "SELECT * FROM users WHERE name = ?";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1, "Alice");
? 로 값을 대체하고 미리 컴파일(precompile) → 실행 시 값만 바인딩
🔐 웹 보안이란?
- 웹 애플리케이션은 외부 공격에 항상 노출되어 있음
→ 반드시 입력값 검증, 보안 처리 필요
💉 SQL Injection (SQL 삽입 공격)
🗒️ 예시 코드
SELECT * FROM MEMBER
WHERE email = 'wonuk' OR 1=1 # AND password = 'pw';
# 뒤는 주석 처리 → 조건 무력화🛡️ 방어 방법
| 방법 | 설명 |
|---|---|
| PreparedStatement 사용 | ? 로 파라미터 바인딩 |
| 입력값 검증 | 문자 길이, 타입, 금지어 검사 |
| 에러 메시지 숨기기 | DB 구조 노출 방지 |
⚔️ XSS (Cross Site Scripting)
📌 종류
| 유형 | 설명 | 예시 |
|---|---|---|
| Stored XSS | 게시글 등 DB에 영구 저장 후 실행 | <script>alert('cookie');</script> |
| Reflected XSS | URL 매개변수 → 즉시 반응 실행 | <a href="...script"> |
| DOM-based XSS | 클라이언트 JS가 직접 실행 | location.href 등 조작됨 |
🛡️ 방어 방법
| 방법 | 설명 |
|---|---|
| 입력값 필터링 | <, >, script 차단 |
| 출력 이스케이프 | HTML 렌더링 시 값 필터링 |
| 보안 라이브러리 사용 | OWASP ESAPI 등 |
| Content Security Policy(CSP) 설정 | 스크립트 실행 제한 |