STUDY/Web

SQL Injection

sinawi95 2023. 9. 4. 06:37
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