홈페이지 운영팁

SQL 인젝션이란?

2023-12-11

 

SQL 인젝션


보안의 기본, CH. 04 데이터베이스에 부정 액세스한다.



SQL 인젝션이란?

 

SQL 인젝션이란 웹 애플리케이션에 대한 입력을 악용하여,

애플리케이션의 뒤에서 작동하는 데이터베이스에 부정하는 액세스하는 공격입니다.


SQL 인젝션이 성공하면 공격자는 거의 자유롭게 데이터베이스를 조작할 수 있게 되므로 부정 액세스나 정보의 절취 및 변조, 파괴 등이 가능해집니다. 

중요한 데이터를 데이베이스에 저장하고 있는 경우는 막대한 피해를 입게 됩니다. 



SQL 인젝션의 구조

웹 애플리케이션의 뒤에는 애플리케이션의 참조나

갱신을 하기 위한 데이터를 제공하는 데이터베이스가 마련되어 있는 경우가 많습니다.

사용자의 조회나 조작에 따라 데이터의 참조 및 갱신 처리를 하기 위해 데이터베이스에 SQL 이라는 언어로 조회를 합니다. 


 

조회에는 SQL 중 사용자가 입력하는 부분이 비어 있는 형태로,

입력 값을 채워 넣는 방식(인젝션의 예 그림 참조)으로 일어나기 때문에 사용자의 데이터 베이스 조작에는 제한이 걸려있습니다. 

하지만 애플리케이션에 입력하는 값을 부정으로 조작함으로써 SQL의조회 내용을 자유롭게 바꿀 수 있는 경우가 있습니다.



SQL 인젝션을 허용하는 취약성과 대책

 

SQL 인젝션이 일어나는 원인은 사용자의 입력에 데이터베이스에 대한

조회 내용이 단순한 빈칸채우기의 범위를 넘어 자유롭게 바꿀 수 있게 되어 있는 취약성에 있습니다. 


 

바꿀수 없게 만드는 대책으로는 입력 값을 사용하여 SQL 문을 구성할 때 파라미터 바인드라는 기구를 사용하는 것 등이 있습니다. 



SQL 인젝션의 예 

공격자는 입력 값을 부정으로 조작하여 조회문(SQL)을 자유롭게 바꿔 버립니다.

그 결과 정보의 절취나 변조가 가능해집니다. 아래는 그 방법의 예입니다. 


 

조회문 > 다음 조건과 일치하는 사용자 데이터를 가져오시오.


주소
인천 남동구 선수촌공원로 5, C동 912호
(구월동, 구월테크노밸리)
대표번호
1566-8667
운영시간
평일 오전 9:30 ~ 오후 6:30

사이트 하단 정보

카카오톡 카카오스토리 블로그 인스타그램 페이스북
  • 상호 : 에이디커뮤니케이션
  • 대표 : 우세진
  • 사업자등록번호 : 130-39-21061
  • 고객센터번호 : 1566-8667
  • 팩스 : 02--6924-8414

  • 소프트웨어 사업자 : B11-43345
  • 이메일 : master@ad-com.kr
  • 주소 : 인천 남동구 선수촌공원로 5, C동 912호(구월동, 구월테크노밸리)