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 |
댓글