해킹이란 것이 사실 그렇게 거창하지는 않습니다. 사실 간단한 해킹은 익스플로러만 있어도 할 수 있습니다. 별다른 프로그램 없이 말입니다. 지금은 자동 툴등이 있는 걸로 압니다. 그래서 그냥 툴 사용법을 익혀서 해킹도 할 수 있다고 하더군요.
그리고 아마 디도스 공격도 들어보셨을 겁니다. 이것은 웹사이트에 많은 사람들이 들어오게 하는 거죠. 그렇게 트래픽이 폭주해서 사이트마비를 일으키는 거죠. 참 단순한 공격이지만 물량공세에 쩔쩔 맬수밖에 없죠.
처음에 웹사이트를 운영할 때에는 신경쓰지 않아도 되었던 해킹기술이지만 지금은 기본적으로 방어해야 되는 것이 있는데요.
바로 Sql Injection 공격입니다.
1. Sql Injection 공격
이러한 공격은 Mysql, Mssql 등의 데이터베이스 언어의 기능과 프로그래밍의 헛점을 이용한 공격입니다. 지금은 많은 프로그래머들이 기본적으로 막고 있지만, 조그마한 중소사이트들 중 아직도 이런 처리가 미숙한 경우가 많을 거라 예상됩니다.
데이터베이스는 수백만건의 데이터를 담아 두고, 사용자가 그중에 특정건을 조회하고자 하면, 아주 빠른 속도로 해당 데이터를 추출하는 기능을 가지고 있습니다. 흔히 알고 있는 회원정보, 게시판정보, 상품정보들이 모두 이 데이터베이스에 들어가 있습니다. 심지어 이 데이터베이스에 이미지, 동영상등도 저장할 수 있습니다. 물론 효용성 때문에 그렇게까지 하는 경우는 드뭅니다.
사용자가 웹사이트에 들어와서 검색어를 입력한다고 가정하면 그 검색어가 쿼리문으로 작성되어 데이터베이스에 전달되고 데이터베이스는 해당결과를 되돌려줍니다. 그것을 우리가 보게 되는 것이죠.
그런데 이러한 부분에 트릭을 주면 프로그래머가 의도되지 않은 코드를 실행할 수 있습니다. 자세한 기법은 프로그래밍이 관련되고 웬지 해킹 교육을 하는 것같아 공개하진 않겠습니다.
그러한 코드 중 많은 것들이 데이터베이스안에 특정 HTML을 심는 경우가 많습니다. 이렇게 HTML이 심기게 되면 다른 사람들이 해당 웹사이트에 접속했을 때 거기다 그러한 컴퓨터가 보안에 취약점이 있다면 바로 악성코드 내지 바이러스가 침투하게 되는거죠.
Sql Injection 기법은 사실 그러한 영향만 주는 게 아닙니다. 사실상 데이터베이스 명령어를 내릴 수 있기에 아주 많은 영향을 끼칠 수도 있습니다. 만약에 데이터베이스 관리자가 해당 사이트 계정에 관리자 권한까지 줬다면 즉 꼭 필요한 이상의 권한을 줬다면요.
데이타베이스 내에 모든 데이터를 일거에 삭제할 수도 있습니다.
2. Sql Injection 공격에 대한 방어
이 공격을 막으려면 웹방화벽을 쓰는 방법이 있습니다. 앞서 1부에 설명했던 방법이죠. 다만 이런 처리를 하면 사이트가 조금 느려지는 단점이 있긴 합니다. 혹은 프로그래머가 코딩할 때 이에 대한 방어 코드를 작성할 수도 있습니다. 저 같은 경우는 이 방법을 선호합니다.
Sql Injection 공격을 할 때 꼭 써야하는 단어들을 추출할 수 있는데요. 이 단어가 확인되면 즉시 이후 동작을 차단하는 것이 이 처리의 핵심입니다. 이러한 작동 감지시, 공격 SQL을 저장하고, 공격 IP, 공격 시간을 따로 로그에 남기는 처리까지 해둡니다.
나중에 그 로그를 보게되면 아주 다양한 공격을 시도하는 걸 볼 수 있었습니다. 어떤 경우는 하루에도 수십번씩 공격하더군요.
혹시나 뚫릴까봐 노심초사했던 적이 있습니다. 모든 웹페이지에 이런 처리를 하여야 하는데 혹시나 깜박하고 처리못한게 있는지 두려웠었거든요.
한국 웹사이트들이 보안에 허술하다고 하니 사실 프로그래머들에게 많은 책임이 있는듯합니다. 한편으로는 충분한 보상과 시간을 주지 않는 클라이언트 및 회사에도 문제가 있는 듯 합니다. 기일 맞추기 바쁘고, 겨우 생활비 벌기 바쁘다면 눈에 잘 보이지 않는 보안에까지 신경을 쓰기는 힘든 것이 현실입니다.