SQL 기본 문법을 알아야 하는 이유
취약점 진단 시 성공적인 SQL 인젝션 공격을 위해서는 SQL 기본 문법에 대한 이해는 필수다!
데이터베이스란 무엇인가?
데이터를 구조적으로 모아둔 데이터 집합소
관계형 데이터베이스(Relational Database: RDB)
- 데이터를 열과 행을 가진 테이블 형태로 표현하며, 구조적으로 데이터 관리를 한다.
데이터베이스 용어
(A) = 데이터의 집합 → 테이블
(B) = 행 → 레코드
(C) = 열 → 컬럼
관계형 데이터베이스 관리 시스템(RDBMS)
관계형 데이터베이스를 관리하는 시스템을 RDBMS라고 부른다.
주요 기능은 데이터 추가, 수정, 삭제, 조회, 데이터 무결성 유지, 트랜잭션 관리, 백업 및 복원, 보안 등이 있다.
대표적인 관계형 데이터베이스는 Oracle, MySQL, MS-SQL, PostgreSQL 등이 있다.
NoSQL의 대표적인 제품에는 MongoDB가 있다.
DBMS를 사용하기 위해서는 어플리케이션이 사용되는데 크게 두 가지로 분류된다.
- SQL 클라이언트 프로그램
- JAVA, PHP, Python, C언어 등 프로그래밍 언어를 사용하여 접근
RDBMS의 절대강자 독보적인 1위 ORACLE
그림5의 출처는 https://db-engines.com/en/ranking 으로, 데이터베이스 순위를 확인할 수 있다.
MySQL ≒ MariaDB는 무료버전이라는 장점이 있다.
Oracle과 MS-SQL은 공공기관 및 주요 기업에서 주로 사용하며, 유료이다.
대부분 기업에서 Oracle을 독보적으로 많이 사용하며 그 다음으로 MS-SQL과 IBM Db2가 사용된다.
SQL이란 무엇인가?
SQL(Structured Query Language)
- 구조화된 질의문
Application = SQL 클라이언트 프로그램, 프로그래밍 언어(JAVA, PHP, Python 등)
Application에서 DBMS로 SQL을 사용하여 요청을 한다.
데이터베이스는 DBMS로 부터 요청을 받고 해당 데이터를 가져오거나 수정한다.
SQL 문법 종류
DDL(데이터 정의 언어)
- 테이블과 같은 데이터의 구조를 정의하는 언어
- 데이터를 생성, 수정, 삭제 하는 등의 데이터의 전체 골격을 결정한다.
- 데이터베이스, 테이블 등을 생성하는 역할 → 데이터 구조와 관련된 명령어
종류 | 역할 |
CREATE | 데이터베이스, 테이블 등을 생성 |
ALTER | 테이블을 수정 |
DROP | 데이터베이스, 테이블을 삭제 |
TRUNCATE | 테이블 초기화 |
RENAME | 데이터베이스의 객체 이름 변경 |
DML(데이터 조작 언어)
- 정의된 데이터베이스에 입력된 레코드를 조회, 수정, 삭제하는 등의 역할을 하는 언어
- SQL Injection 공격 시 자주 사용되는 언어이다.
종류 | 역할 |
SELECT | 데이터 검색 |
INSERT | 데이터 삽입 |
UPDATE | 데이터 수정 |
DELETE | 데이터 삭제 |
DCL(데이터 제어 언어)
종류 | 역할 |
GRANT | 특정 데이터베이스 사용자들에게 특정 작업에 대한 수행 권한 부여 (특정 사용자만 특정 작업을 할 수 있도록 지정 가능) |
REVOKE | GRANT 명령으로 주어진 액세스 권한을 철회 |
TCL(트랜잭션 제어 언어)
- 데이터를 제어하는 언어
- 데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는데 사용
종류 | 역할 |
COMMIT | 트랜잭션의 작업 결과를 저장 반영(트랜잭션 완료) |
ROLLBACK | 데이터베이스를 마지막으로 COMMIT된 시점의 상태로 복원 데이터에 대한 변경 내용은 논리적인 트랜잭션으로 그룹화 될 수 있다. |
SAVEPOINT | ROLLBACK시 트랜잭션에 포함된 전체 작업 복원이 아닌 SAVEPOINT까지 트랜잭션의 일부만 롤백 가능 |
데이터 처리를 위한, CRUD
대부분 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다. 사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신)을 가리키는 용어로서도 사용된다.
참고
'웹 해킹 > SQL 기본' 카테고리의 다른 글
SQL 기본 문법과 활용 (0) | 2024.11.17 |
---|