Database Management System (데이터베이스 관리 시스템)
- 데이터에 새로운 정보를 기록
- 기록된 내용을 수정/삭제
- 다수의 사람이 동시에 데이터베이스에 접근 가능
- 복잡한 요구사항을 만족하는 데이터를 조회 가능
종류
|
대표적 DBMS
|
Relational
(관계형) |
MySQL, MariaDB, PostgreSQL, SQLite -> 행과 열의 집합인 테이블 형식으로 데이터를 저장
|
Non-Relational
(비관계형) |
MongoDB, CouchDB, Redis -> 키-값 형태로 값 저장
|
Relational DBMS
- 행과 열의 집합으로 데이터를 관리
- 테이블 형식의 데이터를 조작할 수 있는 관계 연산자 제공
- Structured Query Language (SQL) 라는 쿼리 언어를 사용 -> 쿼리를 통해 테이블 형식의 데이터를 조작
SQL
- RDBMS의 데이터를 정의하고 질의/수정하기 위해 고안된 언어
- 구조화된 형태를 가지는 언어
- 웹 어플리케이션이 DBMS와 상호작용할 때 사용
언어설명DDL
(Data Definition Language)데이터를 정의하기 위한 언어. 데이터를 저장하기 위한 스키마, 데이터베이스의 생성/수정/삭제 등의 행위를 수행DML
(Data Manipulation Language)데이터를 조작하기 위한 언어. 실제 데이터베이스 내에 존재하는 데이터에 대해 조회/저장/수정/삭제 등의 행위를 수행.DCL
(Data Control Language)데이터베이스의 접근 권한 등의 설정을 하기 위한 언어 ->
1. 데이터베이스 내에 이용자의 권한 부여하기 위한 GRANT
2. 권한 박탈하는 REVOKE가 대표적
DDL
RDBMS에서 사용하는 기본적인 구조 : 데이터베이스 → 테이블 → 데이터 구조
데이터를 다루기 위해 데이터베이스와 테이블을 생성해야 함 -> DDL 사용
DDL의 CREATE 명령 -> 새로운 데이터베이스 또는 테이블 생성
DML
생성된 테이블에 데이터를 추가하기 위해 사용
- 새로운 데이터를 생성하는 INSERT
- 데이터를 조회하는 SELECT
- 데이터를 수정하는 UPDATE
SQL Injection
웹 서비스 -> 이용자의 입력을 SQL 구문에 포함해 요청하는 경우가 있음
이용자가 SQL 구문에 임의 문자열을 삽입하는 행위 => SQL Injection
SQL Injection이 발생하면 조작된 쿼리로 인증 우회 / 데이터베이스의 정보 유출 가능
Blind SQL Injection
의도하지 않은 결과를 반환해 인증을 우회하는 것 -> 데이터베이스의 데이터를 알아낼 수 있음
=> 이때 사용하는 공격 기법이 Blind SQL Injection
질의 결과를 이용자가 화면에서 확인 못할 때 참/거짓 반환 결과로 데이터를 획득하는 공격 기법