본문 바로가기

web

[SQL Injection] SQL Injection이란?

1. SQL이란?

SQLStructured Query Language의 약자로 구조화된 질의어이다. 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다. 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었다. SQL은 데이터베이스로부터 정보를 얻거나 갱신하기 위한 표준 대화식 프로그래밍 언어이다.

SQL의 종류

DDL(Data Definition Language) – 데이터 정의 언어

SCHEMA, DOMAIN, TABLE를 정의하거나 변경 또는 삭제할 때 사용하는 언어

• 데이터 정의 언어의 3가지 유형

명령어

특징

CREATE

SCHEMA, DOMAIN, TABLE을 생성

ALTER

SCHEMA, DOMAIN, TABLE의 속성을 변경

DROP

SCHEMA, DOMAIN, TABLE을 삭제

 

DML(Date Manipulation Language) – 데이터 조작 언어

TABLE내의 데이터를 제어할 때 사용되는 언어

• 데이터 조작 언어의 4가지 유형

명령어

특징

SELECT

테이블에서 조건에 맞는 열을 검색

INSERT

테이블에 새로운 열을 삽입

DELETE

테이블에서 조건에 맞는 열을 삭제

UPDATE

테이블의 조건에 맞는 열을 수정

 

DCL(Data Control Language) – 데이터 제어 언어

• 데이터의 보안, 무결성, 백업등 제어할 때 사용되는 언어

• 데이터 제어 언어의 종류

명령어

특징

COMMIT

명령어가 성공적으로 수행됨을 선언

ROLLBACK

명령어의 수행이 실패하였음을 알리고,

이전 상태로 되돌린다.

GRANT

사용자에게 사용권한을 부여

REVOKE

사용자에게 사용권한을 취소


2. SQL Injection이란?

Injection의 사전적 의미는 주입” “주사라는 뜻을 가진다.

, SQL Injection SQL을 웹 어플리케이션에 주입한다는 의미이다.

여기서 기술적인 의미로는 웹 어플리케이션이 사용자의 입력에 대해 충분한 검증을 가지지 못해, 악의적으로 입력된 SQL문이 데이터베이스에서 실행되게 하는 공격방법이다.

SQL InjectionOWASP(국제웹보안표준기구)에서 2010년과 2013년에 발표한 웹 취약점 문제에 대한 OWASP TOP 10에서 “A1”으로 뽑힐 정도로 보안의 큰 위험을 주는 공격방법이다