728x90
데이터베이스 종류
DBMS
- 데이터베이스 관리 시스템
- Codd의 12가지 규칙이 있음
- 기록, 조회, 수정, 삭제 가능 (CRUD)
- 관계형: 테이블(행, 열) 형식
- MySQL, MariaDB, PostgreSQL, SQLite
- 비관계형: 키-값 형식
- MongoDB, CouchDB, Redis
RDBMS
- 관계형 데이터베이스 관리 시스템
SQL, Structured Query Language
RDBMS의 데이터를 정의하고 조작하기 위해 고안된 언어
언어 | 설명 |
DDL (Data Definition Language) | 데이터 정의 언어. 데이터베이스 생성/수정/삭제 |
DML (Data Manipulation Language) | 데이터 조작 언어. 데이터베이스 내 데이터 조회/저장/수정/삭제 등 |
DCL (Data Control Language) | 데이터베이스 설정 언어. 데이터베이스의 권한 부여 및 박탈 |
SQL Injection
Injection 공격
- 유저의 입력값이 어플리케이션의 처리과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점을 이용함
Blind SQL Injection
- SQL의 답을 TRUE/FALSE로 만들어서 답을 유츄하는 SQL injection 방식
- 화면에서 직접 확인하지 못할때 사용
- 많은 시간을 들여야하므로 스크립트를 작성해서 사용
SQL injection 방어 방법
Prepared Statement
Object Relational Mapping (ORM)
NoSQL Injection
NRDBMS 비관계형 데이터베이스
다양한 DBMS가 존재함
- Redis, Dynamo, CouchDB, MongoDB 등
- 각각의 구조와 사용 문법을 익혀야 함
MongoDB
특징
1. 스키마를 따로 정의하지 않아 각 컬렉션(Collection)에 대한 정의가 필요하지 않음
2. JSON 형식으로 쿼리를 작성할 수 있음
3. id 필드가 Primary Key 역할을 함
https://www.mongodb.com/docs/manual/
Redis
키-값(Key-Value)의 쌍을 가진 데이터 저장
메모리 기반의 DBMS
- 읽고 쓰는 작업이 빠름
- 다양한 서비스에서 임시 데이터를 캐싱하는 용도로 주로 사용함
https://redis.io/commands/
CouchDB
MongoDB와 같이 JSON 형태인 도큐먼트(Document)를 저장
- REST API 형식으로 요청 처리
https://docs.couchdb.org/en/latest/api/index.html
NoSQL Injection이나 SQL injection과 방식은 같음
- 각 데이터베이스의 구조와 사용 문법을 익히거나 매뉴얼을 잘 검색해서 사용하자
'STUDY > Web' 카테고리의 다른 글
CSRF, Cross Site Request Forgery (0) | 2023.09.04 |
---|---|
XSS, Cross site scripting (0) | 2023.09.04 |
SOP & CORS (0) | 2023.09.04 |
Cookie & Session (0) | 2023.09.04 |
배포 자동화 (4) HTTPS 적용 및 Nginx 설정 (2) | 2022.01.04 |