본문 바로가기

보안

SQL 인젝션 방어방법..

2틀전 SQL 인젝션으로 인해 Table을 몽땅 날려 버리고,

회사에서 짤릴뻔 했다.ㅜㅜ

다행히 백업본으로 복구 완료~~

 

SQL인젝션 다시 한번 알아보기로 하자. 

 

SQL인젝션 (injection) 이란?

해커가 웹사이트의 보안이 취약한 부분을 찾아서

SQL명령어를 실행하여 데이타베이스 정보를 제어하는 것을 말한다.

정보를 빼내기도 하고, 관리자페이지에 로그인이 가능하게 하기도 하고,

지금처럼 데이타베이스 삭제도 가능하다.

아주 무서운 녀석이다.

 

SLQ인젝션 방어방법을 알아보자...

 

1. 사용자 입력값 체크

 

   사용자가 입력한 값이나   URL 입력값에서 특수문자를 필터링한다.

   (") , (') , (;) , (/) ,  (!) , (@) , ($) , (%) , (^) , (&) , (*) 등등...


 

2. 에러메세지 출력방지

   에러메세지 출력으로 중요한 데이타베이스를 정보를 보여 줄 수 있으므로

   팝업창을 띄우거나 새로운 창으로 이동시킨다.

 

3. 사용자 권한제한

   웹사이트에서는 사용자권한을 제한하여 일반사용자들이 프로시저에 접근하지 못하게 한다.

 

4. 방화벽사용

 

 

더 좋은 방법이 있다면~ 댓글 남겨주세요..*^^*

 

 출처 | http://blog.naver.com/mim2wa/220441565209

----------------------------------------------------------------------------------------------------- 

 

SQL 인젝션 공격은 발생한지 10년이 넘었으며 크고 작은 사고들로 인하여 이 공격의 심각성은 누구나 잘 알고 있고

이에 대한 묘책을 찾고 있지만 쉽게 알아내지 못하고 있음.

기업이 완벽한 데이터베이스 애플리케이션 코드를 작성하더라도 여전히 관련없는 써드파티 소프트웨어들어 인한 취약점으로 위험이 발생할 수 있기 때문임. 하지만 위험을 줄이기 위해 도움이 될만한 몇가지 실무사례를 소개하고자함.

 

주요내용 (SQL 인젝션 공격위험을 줄이기 위한 세가지 실무사례)

1. 보유하고 있는 데이터베이스의 모든 목록을 파악하고 그것들과 애플리케이션의 접속내역을 이해하는 것

     - 많은 기업들이 보유하고 있는 데이터베이스를 모두 알고 있다 하더라도, 의도치 않게 네트워크상으로 공개될 수 있음.

        이는 데이터베이스 자체의 문제가 아닌 네트워크 문제로 테스트 환경에서 실제 데이터 또는 연결을 사용하고 테스트 이후

        데이터를 삭제하지 않거나 연결을 끊지 않는 것이 경우가 하나의 예

 

2. 지속적으로 애플리케이션과 데이터베이스를 모니터링 하는것

     - 지속적인 모니터링은 진짜 SQL의 흐름을 파악하고 이와 반대되는 불량트래픽(SQL 인젝션공격)을 알아낼 수 있음.

 

3. 세번째는 데이터 손실 방지 시스템으로 데이터베이스 네트워크를 보호하는 것.

     - 이를 통하여 네트워크상으로 보이지 말아야할 신용카드 정보들이 존재한다면, 관리자는 이를 문제점으로 빨리 인식하고

       이에 대한 대응을 해야함.

 

 

[출처]
1. http://www.networkworld.com/article/2363306/security0/three-best-practices-for-reducing-the-risk-of-sql-injection-attacks.html

2. http://www.krcert.or.kr/kor/data/TrendView.jsp?p_bulletin_writing_sequence=21389

3. http://cafe.naver.com/aonenetworks/594