SQL 인젝션(SQLi)이란 무엇인가요?

SQL 인젝션은 사이버 공격 SQL 쿼리에서 잘못된 입력 유효성 검사를 이용합니다. 애플리케이션이 데이터베이스에 대한 SQL 쿼리에서 신뢰할 수 없는 사용자 입력을 사용하는 경우 의도적으로 잘못된 형식의 사용자 입력이 쿼리를 수정할 수 있습니다. SQL 삽입 공격은 데이터베이스에서 데이터를 액세스, 수정 또는 삭제하는 데 사용할 수 있습니다.

Download the eBook 데모 예약하기

SQL 인젝션(SQLi)이란 무엇인가요?

SQL 삽입 공격이 수행되는 방법

사용자 입력을 기반으로 SQL 쿼리를 수행하는 애플리케이션은 SQL 삽입 공격에 취약할 수 있습니다. 예를 들어, 웹 애플리케이션은 인증 프로세스를 구현하기 위해 SQL 질의를 사용할 수 있다. 사용자는 애플리케이션이 해당 사용자 계정의 암호 해시를 조회하는 데 사용하는 사용자 이름을 제공합니다. 사용자가 제공한 암호의 해시가 이 암호 해시와 일치하면 사용자가 성공적으로 인증되고 계정에 대한 액세스 권한을 얻습니다.

웹 애플리케이션이 SQL 쿼리에 포함하기 전에 사용자 이름에 대한 유효성 검사를 수행하지 않으면 프로그램에서 의도적으로 잘못된 형식의 사용자 이름을 잘못 해석할 수 있습니다. 예를 들어 SQL 쿼리는 일반적으로 작은따옴표(') 또는 큰따옴표(")를 사용하여 명령의 데이터를 나타냅니다. 예를 들어, 사용자 이름 사용자를 기반으로 데이터베이스에서 고객의 레코드를 조회하는 명령은 다음과 같을 수 있습니다. SELECT * FROM customers WHERE username="user".

자신의 명령에 대해 SQL 삽입 공격을 수행하는 공격자는 입력에 큰따옴표를 포함하여 일부 데이터를 코드로 해석할 수 있습니다. 예를 들어 사용자 이름을 고려하십시오 사용자" OR "1"="1.

SQL 쿼리에 삽입하면 쿼리는 다음과 같이 됩니다. SELECT * FROM customers WHERE username="user" OR "1"="1". 사용자 이름이 사용자가 제공한 값과 일치하는 레코드를 찾는 대신 이 쿼리는 두 조건 중 하나와 일치하는 레코드를 반환합니다. 첫 번째는 의도된 테스트입니다 사용자 이름 = "사용자", 사용자의 레코드를 반환합니다.

두 번째 조건은 테스트입니다 "1"="1". 이것은 항상 true이므로 데이터베이스의 모든 레코드를 반환합니다. 이를 통해 공격자는 다른 사용자에 대한 중요한 정보를 추출하거나 인증을 우회하거나 다른 사용자로 인증할 수 있습니다.

SQL 인젝션의 유형

SQLi 공격은 다양한 목적을 달성하는 데 사용할 수 있으며 다양한 방식으로 수행할 수 있습니다. SQLi의 세 가지 주요 유형은 다음과 같습니다.

  • 대역 내 SQLi: 대역 내 SQLi 공격은 HTTP 요청과 같은 동일한 매체를 사용하여 공격을 수행하고 결과를 수집합니다. 인바운드 SQLi 공격의 두 가지 일반적인 형태는 공격에 사용할 대상 데이터베이스에 대한 정보를 제공하는 오류 메시지를 생성하려고 시도하는 오류 기반 SQLi 공격과 SQL UNION 연산자를 사용하여 SQL SELECT 문을 병합하는 통합 기반 SQL입니다.
  • 블라인드 SQLi : 블라인드 SQLi 공격에서 공격자는 요청에 따라 서버로부터 데이터를 수신하지 않습니다. 대신 공격자는 서버의 동작에 따라 공격을 수정합니다. 예를 들어 입력이 다르면 작업이 성공 또는 실패하거나 작업을 수행하는 데 걸리는 시간에 영향을 줄 수 있습니다.
  • 대역 외 SQLi: 대역 외 SQLi 공격은 한 매체에 대한 공격을 수행하고 다른 매체에 대한 데이터를 수집합니다. 이 공격은 데이터베이스 서버의 특정 기능 가용성에 의존합니다. 예를 들어 공격자는 데이터베이스 서버가 공격자가 제어하는 서버에 대한 HTTP 또는 DNS 요청을 생성하도록 강제할 수 있는지 여부에 따라 SQLi 공격의 성공 여부를 측정할 수 있습니다.

SQLI를 방지하는 방법

SQLi 공격은 SQL 명령에 신뢰할 수 없는 데이터를 사용할 때 입력 유효성 검사가 잘못되었다는 점을 이용합니다. 많은 SQLi 공격은 사용자 입력 내에서 작은따옴표 또는 큰따옴표와 같은 예기치 않은 문자를 사용하는 것과 관련이 있습니다.

SQL 쿼리에 사용자 제공 데이터를 포함하기 전에 입력 유효성 검사를 수행하면 SQLi 공격의 위협을 줄이는 데 도움이 될 수 있습니다. 예를 들어 애플리케이션은 영숫자 사용자 이름만 허용하는 등 사용자 입력을 특정 문자 집합으로 제한하거나 특정 문자가 사용자 입력에 포함되지 않도록 차단할 수 있습니다. 그러나 입력 유효성 검사는 중요하지만 SQL 삽입 공격으로부터 보호하기에는 충분하지 않습니다. 공격자는 차단을 피하기 위해 예기치 않은 문자 조합을 사용하여 허용 목록 또는 차단 목록을 우회할 수 있습니다.

이러한 이유로 기업은 웹 애플리케이션 방화벽 (WAF) 또는 이상적으로는 웹 애플리케이션 및 API 보호 (WAAP)는 SQL 쿼리를 수행하는 웹 애플리케이션 및 API 앞에 있습니다. 이러한 솔루션은 웹 애플리케이션 및 API에 대한 SQLi 및 기타 공격을 악용하려는 악의적인 요청을 식별하고 차단하는 데 도움이 될 수 있습니다.

SQLi Prevention with 체크 포인트

SQLi 공격은 조직에 위협이 되는 많은 공격 중 하나입니다. 애플리케이션 보안 (AppSec)을 클릭합니다. 조직에는 온프레미스와 클라우드 모두에서 인터넷 연결 애플리케이션과 데이터베이스를 보호할 수 있는 보안 솔루션이 필요합니다.

체크 포인트 CloudGuard AppSec 애플리케이션의 작동 방식을 학습하고 불법 및 악의적인 요청이 취약한 애플리케이션에 도달하는 것을 방지하는 자동화된 WAAP 기능을 제공합니다. CloudGuard AppSec 및 SQLi 및 기타 공격으로부터 보호하는 기능에 대해 자세히 알아 보려면 다음을 확인하십시오 전자책. 당신도 환영합니다 무료 데모 신청하기 CloudGuard AppSec의 기능을 직접 확인하십시오.

×
  피드백
본 웹 사이트에서는 기능과 분석 및 마케팅 목적으로 쿠키를 사용합니다. 웹 사이트를 계속 이용하면 쿠키 사용에 동의하시게 됩니다. 자세한 내용은 쿠키 공지를 읽어 주십시오.