SQL Injection Member 최병희, 김상우, 조용준, 유창열
목 차 1. 주제선정 이유 2. SQL Injection 이란? 3. 공격 기법 4. 대응 방안 5. 수행 내용 & 자체 평가 목 차 1. 주제선정 이유 2. SQL Injection 이란? 3. 공격 기법 4. 대응 방안 5. 수행 내용 & 자체 평가 6. Q & A
주제 선정 이유 OWASP TOP 10 - 2010 가장 심각한 웹 어플리케이션보안 위험 10가지 ‘가장 일반적인 취약점 10가지’가 아닌, ‘최상위 위험 10가지’를 의미한다 A1-인젝션 : SQL, OS, LDAP 인젝션
SQL Injection 이란? 정 의 DB로 전달되는 쿼리를 변경시켜 비정상적인 DB접근을 시도함으로써 허가 받지 않은 데이터에 접속 하는 기술
공 격 기 법 공격 환경 일반 적으로 취약한 로그인 쿼리 APM 6 $id =_POST[“id”]; $passwd =_POST[“passwd”]; $sql = "SELECT * FROM member WHERE id = ‘$id’ AND passwd = ‘$passwd’"; TEST웹 gogo~씽 Click~! 블로그 gogo~씽 Click~!
공 격 기 법 ID 알고, PW 주석처리를 통한 로그인 성공 ID 알고 ,PW 알지 못할 때 인젝션 통한 로그인 성공 Select userid,userpw from account where username=‘’or’1’=‘1’ and passwd =‘’or’1’=‘1’ Username=‘(false)’or’1’=‘1’(true) and passwd=‘(false)’or’1’=‘1’(true) ID 와 PW 를 모를시에 로그인 기법 Select userid,userpw from account where username=‘’or’1’=‘1’--’ and passwd =‘1235123’ Username=‘(false)’or’=‘1’(true) ID 를 모르고 PW 주석처리를 통한 로그인 기법 ID 알고 ,PW 알지 못할 때 인젝션 통한 로그인 성공 ‘ 와 같이 문자구분 기호를 넣었을 때 오류메시지 표시
대 응 방 안 응용프로그램의 에러정보를 노출하지 않는다. 사용자가 입력하는 입력 값을 검증한다. 대 응 방 안 응용프로그램의 에러정보를 노출하지 않는다. 사용자가 입력하는 입력 값을 검증한다. 데이터의 길이에 제한을 두는 방법. 동적인 SQL을 되도록 사용하지 않는다. ini_set('display_errors', 'off'); ->php.ini 에서 설정 값 @mysql_함수이름(); Bool ctype_alnum(); Bool ctype_alpha(); Bool ctype_digit();
수행 내용 & 자체 평가 참여인원 4명 수행 시간 16시간 자체 평가 결과의 우수성 및 창의성 (우수) 결과에 대한 활용가능성 (우수) 수행 노력에 성실도 (아주 우수) 공개발표 된 연구 성과 (보통) 목표 달성도 (표) 세부목표 비중(%) 달성도(%) 자체평가 SQL Injection 원리 이해 40 85 생략 시 현 20 80 대응 방안 90 합 계 100
Q & A 질문있습니까?
감 사 합 니 다