SQL Injection
- 대표적인 웹 해킹 기법
- 웹 애플리케이션에서 데이터베이스에 질의하는 과정에 악의적인 SQL 문을 삽입해 인증을 우회하거나, 악의적인 쿼리문을 수행하는 공격법
1) 공격 유형
(1) 인증우회(AB, Auth Bypass)
- 일반적으로 로그인 페이지를 타겟
- SQL 문의 True / False 논리적인 연산의 오류를 이용
- ex. 패스워드에 "or 1 = 1"을 삽입해 인증을 우회
(2) 데이터 노출
- 해당 웹 애플리케이션의 데이터 절취를 목적
- 악의적인 쿼리문으로 에러를 유발시켜 데이터나 데이터베이스의 정보를 노출시킴
2) 방어 방법
(1) 특수문자 검사
- 로그인 페이지처럼 사용자의 입력을 통해 쿼리문을 수행할 때, 특수문자 여부를 검사하는 로직을 수행
- 자바스크립트 폼을 통해 입력값을 받아 특수 문자 검증 가능(하지만, 공격자가 자바스크립트를 꺼버리면 그만)
(2) 에러 메시지 노출 방지
- 데이터베이스의 원본 테이블에 대한 접근 권한을 높이고, 일반 사용자는 view를 통해서만 접근할 수 있도록 통제
(3) Prepare Statement
- statement 대신 prepared statement를 통해 SQL 문을 수행하면 자동으로 특수문자를 escaping할 수 있음
(4) Hash Function
- 해시 함수를 통해 데이터베이스에 저장되는 데이터 중 복호화가 필요없는(ex. 패스워드) 데이터를 암호화해서 저장
'CS > Database' 카테고리의 다른 글
[데이터베이스] 샤딩(Sharding) (0) | 2020.06.24 |
---|---|
[데이터베이스] 파티셔닝(Partitioning) (0) | 2020.06.24 |
[데이터베이스] 데이터베이스 풀(Database Pool) (0) | 2020.06.24 |
[데이터베이스] 옵티마이저(Optimizer) (0) | 2020.06.24 |
[데이터베이스] 클러스터링(Clustering) (0) | 2020.06.24 |
댓글