키워드 검색어를 통해 결과를 보여주는 페이지를 만든다고 생각해봅시다. 예를들어 /search/ 라는 페이지가 있는 경우.. 이를 구현할때 해킹 및 보안을 위해 해야할 필수적인 것들은? 뭐가 있을까요?

SQL injection등을 생각해볼 수 있겠죠.


# SQL injection 회피하기

먼저 SQL injection은 무엇일까요? SQL 인젝션은 가장 간단하고 잘 알려진 해킹 방법이라고 할 수 있죠. 이 방법은 매우 간단한데 웹페이지의 입력폼의 어느 곳이든 공격 대상이 될 수 있습니다. 일반적으로 아래와 같죠.
  • ID 또는 PASS 입력폼
  • 키워드 입력폼
간단한 예를들어보겠습니다. 아래의 경우 패스워드를 입력하는 곳에 패스워드가 아닌 다음의 텍스트를 입력했다고 가정합니다.

패스워드를 입력하세요!

PASSWORD: abc OR 0=0

매우 간단한 텍스트이지만 이를 그래로 쿼리에 사용할 경우 큰 문제가 발생될 수 있습니다. 뒤의 OR 조건이 쿼리문에 그대로 사용될 수 있기때문이죠.


# SQL 인젝션을 회피하기 위한 방법

- 응답 받은 내용은 최소한의 안전장치를 사용할 것
; 텍스트 및 숫자만 허용하는 경우 스페이스 또는 따옴표 등이 기호들이 있는지 확인하고 포함된 경우 에러를 발생하는 방법이 가장 간단하면서 쉬운 방법입니다.

? 가장 피해야 할 기호 및 문자
따옴표, 스페이스, 세미콜론 이 3가지는 허용되지 않는 경우 반드시 검증하여 포함여부를 체크하는 것이 좋습니다.


- 서버 언어에서 인젝션을 회피할 수 있도록 제공하는 안전한 쿼리 데이터 함수를 사용
; 쿼리를 적용하기 위한 다양한 함수가 있으며 이때 인젝션을 회피할 수 있는 함수가 있다면 적용하는 것이 좋습니다.