SQL Injection 취약점이란?

  • 데이터베이스와 연동된 웹 애플리케이션에서 공격자가 입력 폼 또는 URL 입력란에 SQL 구문을 삽입하여 DB를 조작할 수 있는 취약점
  • 입력란에 입력된 데이터의 유효성을 검증하지 않아 발생되는 보안 취약점이다.
  • 쉬운 공격 난이도에 비해 공격이 성공할 경우 상당히 큰 피해를 낼 수 있는 취약점으로 파급력이 큰 취약점이라 볼 수 있다.
  • 공격에 사용되는 방식에 따라 아래와 같이 분류된다.
    • Generic SQL Injection
    • Blind SQL Injection
    • Union SQL Injection
    • Error based SQL Injection
    • Stored Procedure SQL Injection

 

SQL Injection 취약점 대응 방안

  • 입력 값에 대한 검증 로직을 구현하여 사전에 정의된 특수 문자들이 입력되지 않도록 조치한다.
  • Prepared Statement 구문을 사용하여 개발을 함으로써 입력 값에 들어가는 데이터는 단순히 문자열로 처리되도록 한다.
  • 불필요한 데이터베이스 에러 메시지가 사용자에게 노출이 되지 않도록 한다.
  • 웹 방화벽 (WAF, Web Application Firewall)를 사용하여 비정상적인 데이터가 전송이 될 경우 차단하도록 한다.