Skip to main content

SQL 인젝션

구조화적 쿼리 언어 인젝션

관련된 오류

"이 서버는 SQL 인젝션 공격에 취약합니다. 입력 SQL 쿼리를 유효성 검사하는지 확인합니다."

문제점

SQL 인젝션 공격은 웹 사이트 및 앱 애플리케이션의 코드에 취약성의 유형입니다. 이 취약성은 공격자가 백엔드 프로세스를 하이재킹하고 애플리케이션이 데이터베이스에 수행하는 쿼리를 방해하는 것을 가능하게 합니다.

SQL 인젝션 공격은 데이터를 신뢰할 수 없는 소스의 프로그램에서 입력할 때 발생합니다. 그런 다음 데이터를 사용하여 SQL 쿼리를 동적으로 구성합니다.

SQL 인젝션 공격이 성공적이면 공격자는 다음을 할 수 있습니다.

  • 암호가 없이도 애플리케이션 또는 웹 사이트 프론트엔드에 로그인합니다.

  • 보안 데이터베이스에서 저장된 데이터를 액세스, 수정 또는 삭제합니다.

  • 자신의 데이터베이스 레코드를 생성하거나 기존 레코드를 수정하여 더 많은 공격을 가능하게 합니다.

솔루션

SQL 인젝션 공격을 방지함:

  1. 미리 준비된 SQL문(매개 변수의 쿼리 포함)을 사용하여 SQL문에 전달되는 매개 변수(입력)를 안전하게 처리하는지 확인합니다.

  2. 허용 목록 입력 데이터 유효성 검사 (차단 목록이 아님). 차단 목록을 기반으로 사용자 입력을 필터링하지 않습니다. 공격자는 목록을 우회할 방법을 거의 항상 찾습니다. 가능한 경우 엄격한 허용 목록만 사용하여 사용자 입력을 확인 및 필터링합니다.

  3. 매개 변수의 쿼리 및 입력의 유효성 검사가 가능하지 않으면 입력 매개 변수에서 특수 문자를 이스케이프합니다.

  4. 가장 적은 권한의 원칙을 적용하여 웹 사이트에 액세스 제어를 강화하여 보안 위협을 줄입니다.

    • 작업을 수행하려면 시스템에 최소 권한을 사용합니다.

    • 작업에 필요한 최소 권한을 제공합니다.

    • 애플리케이션 계정에 관리자 액세스 권한을 제공하지 마십시오.

    • 환경에 각 데이터베이스 권한에 권한을 최소화합니다.