대응 방안 개요일반적인 방법- 시큐어 코딩 → 근본적인 대응 방안- 인라인 보안솔루션(IPS,WAF 등) → 한계가 있다. (우회 할 수 있음) 시큐어 코딩1. Prepared Statement 사용2. 사용자 입력 값 타입에 따른 입력 값 검증 로직 구현3. 길이 제한 Prepared Statement 가 적용되어 있다면 굳이 2,3번을 적용할 필요가 없다.3번 길이제한은 단독으로 사용하면 안된다. → 1번 or 2번과 같이 적용해야 한다. 대응 방안(1) - Prepared Statement 사용Prepared Statement 는 SQL Injection에 대한 방어 뿐만 아니라 성능적인 이점에 의해서 많이 사용된다.하지만 적절하게 사용하지 않는 경우 Prepared Statement 또한 취약..
1) SQL Injection이란 무엇인가?SQL은 RDBMS에서 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어다.클라이언트와 웹 어플리케이션이 통신할 때 사용자 입력값에 SQL 구문 삽입을 통해 변조된 SQL 구문을 질의함. 이를 통해 데이터 조회, 삭제 등의 다양한 공격이 가능하다. 2) 취약점 발생 원인1. 공격자는 취약한 웹 어플리케이션을 대상으로 SQL 구문을 삽입한다.2. Server-Side Script에서 사용자 입력값을 받게되며, 미완성된 SQL 구문이 사용자 입력값을 통해서 완성된 SQL 구문으로 만들어진다. → 취약점 발생(입력 값 검증 없이 구문 조합하게 되는 경우)3. 완성된 SQL 구문으로 DB에 질의를 요청하게 된다.(변조된 SQL로 질의)4. DB는 질의에 대한..
SQL 기본 문법을 알아야 하는 이유취약점 진단 시 성공적인 SQL 인젝션 공격을 위해서는 SQL 기본 문법에 대한 이해는 필수다! 데이터베이스란 무엇인가?데이터를 구조적으로 모아둔 데이터 집합소 관계형 데이터베이스(Relational Database: RDB)- 데이터를 열과 행을 가진 테이블 형태로 표현하며, 구조적으로 데이터 관리를 한다. 데이터베이스 용어(A) = 데이터의 집합 → 테이블(B) = 행 → 레코드(C) = 열 → 컬럼 관계형 데이터베이스 관리 시스템(RDBMS)관계형 데이터베이스를 관리하는 시스템을 RDBMS라고 부른다.주요 기능은 데이터 추가, 수정, 삭제, 조회, 데이터 무결성 유지, 트랜잭션 관리, 백업 및 복원, 보안 등이 있다.대표적인 관계형 데이터베이스는 Oracl..