목표
1. SQL 쿼리문에 대해서 이해
2. SQL 삽입 공격에 대해서 이해함
3. SQL 삽입 공격의 대응 방법을 이해함
요즘은 지능화되고 있음. 이를 막기 위한 데이터베이스에 대한 암호화 솔루션이 많음.
SQL
MS-SQL 2000의 쿼리 분석기
- 왼쪽에는 서버의 데이터베이스 목록. 마지막에 웹 서버와 연동되는 web 데이터베이스가 위치함.
- 게시판 테이블 board, 사용자 테이블 member, 우편 번호 정보가 들어있는 zipcode
- 데이터베이스는 기본적으로 테이블로 구성. 테이블은 필드와 행으로 구분. (날짜, 제목, 작성자, 내용 등)
테이블 정보 확인
select user_id from member
- member 테이블로부터 user_id 필드의 정보를 불러오는 쿼리문
select user_id from member where user_id='입력한 아이디' and user_pw='입력한 비밀번호'
select user_id from member where user_id='wishfree' and user_pw='dideodlf'
- 웹에서의 로그인 아이디와 비밀번호의 정보를 불러오는 쿼리문
- 잘못된 비밀번호 입력 시, 테이블에서 매핑되는 정보가 없으므로 아무런 정보를 가져오지 않음
실제 웹 로그인 소스
Query = "select user_id from member where user_id = '"&strUser id&"'
and password = '"&strPAssword&"'"
strAuthCheck = GetQueryResult(Query)
if strAuthCheck = "" then
boolAuthenticated = False
else
boolAuthenticated = True
endif
- SQL 삽입 공격은 어떤 수단을 쓰든 SQL 의 결과값이 NULL이 나오지 않고 사용자 ID의 값이 되도록 하여 로그인하는 것.
- 조건값에 or ''=''을 입력하면 where로 입력되는 조건문을 항상 참으로 만들 수 있음 (아무것도 없는 것으로 항상 True)
- 현재는 이런 것들이 모두 필터링되고 있음 (특수문자 필터링)
- XSS 공격이 지능화되어 에러 메시지를 도출하여 그를 통해 공격을 분석하는 공격
- 에러가 발생하면 오류 메시지가 출력됨.
SQL 삽입 공격 (SQL Injection Attack)
- SQL문이 결과적으로 참이 될 수 있다면 SQL 삽입 공격에 사용되는 SQL문은 무엇이라도 상관 없음
- 공격은 로그인 뿐만 아니라 사용자의 입력값을 받아 데이터베이스에 SQL 문으로 데이터를 요청하는 모든 곳에 가능함.
- 공격을 막는 방법은 사용자가 입력창을 통해서 SQL문을 완성하여 데이터베이스에 전송할 때, 이 입력값 중에 특수문자가 존재하는지 여부를 필터링하는 것
- 보안 위험 요소를 방어하기 위해서는 시스템적인 부분도 중요하지만, 소프트웨어적으로 이런 기본적인 필터링만 하더라도 안전성을 많이 높일 수 있음.
'정보보호 > 정보보호학 개론 (2013, 백석대 이근호 교수님)' 카테고리의 다른 글
6-2. 악성 코드 : 바이러스 (0) | 2024.08.10 |
---|---|
6-1. 악성 코드 : 역사 및 분류 (0) | 2024.08.09 |
5-4. 인터넷 보안 : XSS 공격 (0) | 2024.08.09 |
5-3. 인터넷 보안 : 리버스 텔넷 / 인증 우회와 패킷 변조 (0) | 2024.08.08 |
5-2. 인터넷 보안 : 구글 검색 및 파일 접근 (0) | 2024.08.07 |
댓글