[SQL] SQL 정리2

정예은·2020년 1월 15일
0

web

목록 보기
15/27

CREATE DATABASE Statement

syntax

CREATE DATABASE databasename;

DROP DATABASE Statement

Syntax

DROP DATABASE databasename;

BACKUP DATABASE for SQL Server

Syntax

BACKUP DATABASE databasename
TO DISK = 'filepath';
BACKUP DATABASE databasename
TO DISK = 'filepath'
WITH DIFFERENTIAL;
//최근 저장해놓은 것으로 부터 달라진 것만 back up

CREATE TABLE Statement

syntax

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);

ex

CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

DROP TABLE Statement

Syntax

DROP TABLE table_name;

ALTER TABLE Statement

추가하기

ALTER TABLE table_name
ADD column_name datatype;

삭제하기

ALTER TABLE table_name
DROP COLUMN column_name;

바꾸기

//śSQL Server / MS Access:
ALTER TABLE table_name
ALTER COLUMN column_name datatype;

//My SQL / Oracle (prior version 10G):
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

//Oracle 10G and later:
ALTER TABLE table_name
MODIFY column_name datatype;

Constaints

NOT NULL - null 값 들어갈 수 없음
UNIQUE - 모든 값이 달라야 함
PRIMARY KEY - null도 안되고 UNIQUE여야 함각 row에 이름 같은 역할
FOREIGN KEY - 다른 테이블과 다른 독특한 값
CHECK - 모든 값이 특정 조건에 만족하는지 할 수 CHECK
DEFAULT - 기본으로 세팅
INDEX - database로부터 값을 쉽게 빠르게 생성하고 가져올 수 있음

CHECK 예시

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CHECK (Age>=18)
);

ALTER TABLE Persons
ADD CHECK (Age>=18);

ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');

ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;

index syntax

CREATE INDEX index_name
ON table_name (column1, column2, ...);
CREATE INDEX idx_lastname
ON Persons (LastName);

DROP INDEX index_name ON table_name;

AUTO INCREMENT

한 개씩 자동으로 증가하면서 값 들어감

Injection

웹에서 자주 일어나는 공격 기법
전체 해킹 시도 중, SQL 인젝션이 절반에 가까운 비중을 차지

웹 애플리케이션이 데이터베이스와 연동하는 모델에서 발생

SQL 인젝션 공격 목적 및 영향

DB에 비정상적인 쿼리가 실행되도록 함

  1. 인증 우회
    SQL 인젝션 공격의 대표적인 경우
    로그인 폼(Form)을 대상으로 공격을 수행
    정상적인 계정 정보 없이도 로그인을 우회하여 인증을 획득할 수 있음

  2. DB 데이터 조작 및 유출
    조작된 쿼리가 실행되도록 하여, 기업의 개인정보나 기밀정보에 접근하여 데이터를 획득가능
    데이터 값을 변경하거나 심지어 테이블을 몽땅 지워버릴 수도 있음

  3. 시스템 명령어 실행
    일부 데이터베이스의 경우 확장 프로시저를 호출하여 원격으로 시스템 명령어를 수행할 수 있도록 함
    시스템 명령어를 실행할 수 있다면 해당 서버의 모든 자원에 접근하고 데이터를 유출, 삭제 할 수 있다는 말이 됨

SQL 인젝션 공격 원리와 유형

데이터베이스 명령어인 SQL 쿼리문에 기반하여 공격을 수행
공격에 이용되는 쿼리문은 문법적으로는 지극히 정상적인 SQL 구문이지만 실행되지 말아야 할 쿼리문이 실행되어 공격에 이용되는 것

SQL 인젝션을 위해 충족되어야할 조건
조건 1) 웹 애플리케이션이 DB와 연동됨
조건 2) 외부 입력값이 DB 쿼리문으로 사용됨

웹 애플리케이션이 위 두 조건 중, 하나라도 충족하지 않는다면 SQL 인젝션 공격은 무용지물
-> 현재의 대부분 웹 애플리케이션은 위 두가지 조건을 대부분 충족하므로 유효한 공격 기법

Hosting

0개의 댓글