본문 바로가기
Develop/Etc

웹 개발자라면 알아야할 보안 상식 SQL Injection

by bellsilver7 2015. 11. 17.
728x90

SQL Inejction 이란?

SQL Injection은 웹 서비스에 대한 보안 공격 중 하나로, URL 요청이나 웹 요청에 포함되는 Parameter 값에 SQL 구문이나 시스템 명령을 삽입하는 형태의 공격이다. 이러한 공격은 데이터베이스 시스템의 취약성으로 인해 발생하며, 웹 응용 프로그램에 SQL 쿼리를 동적으로 생성하는 경우 특히 취약성을 가진다.

SQL Inejction 공격의 대표적인 예

대표적인 SQL Injection의 예를 들어보면, 웹 서비스 로그인 시 사용되는 SQL 쿼리에 대한 악성 입력이 있다. 일반적인 로그인 쿼리는 아래와 같은 형식일 것이다.

SELECT * FROM user WHERE id = '입력한_아이디' AND password = '입력한_비밀번호'

여기서, SQL Injection 공격자는 입력 필드에 다음과 같은 값을 입력할 수 있다.

' OR '1'='1

그러면 쿼리가 다음과 같이 변경되어 실행된다.

SELECT * FROM users WHERE id = '' OR '1'='1' AND password = '입력한_비밀번호'

이렇게 되면 SQL Injection 공격자는 로그인을 우회하여 모든 사용자의 정보를 검색할 수 있게 된다.

웹 서비스를 보호하기 위한 보안 조치

이러한 SQL Injection 공격으로부터 웹 서비스를 보호하기 위해서는 다음과 같은 보안 조치가 필요하다.

  • 입력 필드 유효성 검사: 입력 필드에 입력된 데이터의 유효성을 검사한다.
  • Prepared statement 사용: Prepared statement를 사용하여 SQL 쿼리의 실행 계획을 미리 작성하여 쿼리 문자열에 악성 입력이 들어가도 실행 계획에는 포함되지 않도록 한다.
  • 접근 권한 제한: 데이터베이스 시스템에서는 각 사용자에 대해 접근 권한을 설정할 수 있다. 적절한 권한을 부여하여 악성 공격자가 데이터베이스 시스템에서 불법적인 조작을 수행하는 것을 방지할 수 있다.
  • 보안 업데이트: 데이터베이스 시스템 및 웹 응용 프로그램에서 보안 업데이트를 수행하여 취약성을 최소화할 수 있다.

이러한 보안 조치를 적용하여 SQL Injection 공격으로부터 웹 응용 프로그램을 보호할 수 있다.

결론

따라서, 웹 응용 프로그램을 개발하거나 관리하는 모든 개발자와 시스템 관리자는 SQL Injection 공격에 대한 이해와 예방 방법을 숙지하고, 보안 조치를 적극적으로 수행해야 한다. 또한, 웹 서비스에 대한 보안 테스트를 수행하여 취약성을 검출하고, 이를 보완할 수 있는 대책을 마련해야 한다.

728x90

'Develop > Etc' 카테고리의 다른 글

[Editplus]Zen Coding(젠코딩)  (0) 2015.11.18
[ASP]문자열(Mid, Instr, InstrRev, LCase, UCase)  (0) 2015.11.17
[ASP] 형변환 함수  (0) 2015.11.17
로딩 이미지 파일  (0) 2015.11.17
에디트플러스(EditPlus) 단축키  (0) 2015.09.20

댓글