JDBC(Java DataBase Connectivity)
💡 자바 언어를 사용하여 DB와 상호 작용하기 위한 자바 표준 API(응용 프로그래밍 인터페이스)
JDBC는 데이터베이스 관리 시스템(DBMS)과 통신하여
데이터를 삽입(C), 검색(R) , 수정(U) 및 삭제(D)할 수 있게 해주는 기술
JDBC의 주요 특징
표준 API
데이터베이스 연결
SQL 쿼리 실행
Prepared Statement
결과 집합 처리(Result Set)
트랜잭션 관리 ★
웹 보안(SQL Injection, XSS)
SQL Injection
💡 악의적인 사용자가 애플리케이션에서 입력 데이터를 이용하여 SQL 쿼리를 조작하고
데이터베이스에 무단 접근하거나 데이터를 변조하는 공격
SQL Injection 종류
Error Based SQL Injection
Union Based SQL Injection
Blind Based SQL Injection
Stored Procedure SQL Injection
Time Based SQL Injection
SQL Injection 예시
# 로그인 쿼리
SELECT * FROM MEMBER
WHERE ID = ' " + 입력한id + " ' and " + "password = ' " + 입력한password + " ';"
# or 1=1로 항상 True가 되고 # 때문에 뒷부분 쿼리가 주석이된다.
# 즉, 항상 로그인이 된다.
SELECT * FROM MEMBER
WHERE ID = 'WONUK or 1=1 #' and " + "password = 'tutor';"
Java 코드 예시
// 로그인
public String login(String id, String password) {
return String query =
"SELECT * FROM MEMBER WHERE ID = " + id
+ "AND PASSWORD = " + password;
}
// 검증
public String login(String id, String password) {
// 매개변수 id, password 가 문제없는지 검증하는 로직 Escape 등
String query =
"SELECT * FROM MEMBER WHERE ID = " + id + "AND PASSWORD = " + password;
return query;
}
Java 코드 예시
XSS(Cross Site Scription)
💡 악성 스크립트를 웹사이트에 주입하는 Code Injection 기법 중 하나 공격자가
웹 어플리케이션에 보낸 악성 코드가 다른 사용자에게 전달될 때 발생
XSS의 종류
Stored XSS
Reflected XSS
DOM based XSS
해결방법
- 입/출력 값을 검증하고 필터링하여 해결
- 외부 보안관련 라이브러리를 사용
- 보안 솔루션을 사용
'TIL' 카테고리의 다른 글
TIL - 2024/09/13 (0) | 2024.09.13 |
---|---|
TIL - 2024/09/12 (0) | 2024.09.12 |
TIL - 2024/09/10 (0) | 2024.09.10 |
TIL - 2024/09/09 (0) | 2024.09.09 |
TIL - 2024/09/06 (0) | 2024.09.06 |