최소 권한 액세스를 적용하고, 사용자 입력을 삭제하며, 데이터베이스 프로시저를 제한하면 SQL 삽입과 그에 따른 데이터 유출을 방지하는 데 도움이 됩니다.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
구조화된 질의 언어 삽입(SQLi)은 공격자가 SQL 데이터베이스에 있는 중요한 정보를 검색, 조작, 파기할 수 있도록 하는 코드 삽입 공격입니다. 이러한 공격은 SQL 쿼리 필드에 특수 명령을 삽입하는 방식으로 작동하며, 이 명령이 실행되면 공격자는 정상적인 사용자의 신원을 스푸핑하고 보호된 데이터를 보거나 검색할 수 있으며 서버에 대한 루트 액세스 권한까지 획득할 수 있습니다.
공격자는 합법적인 코드와 신뢰할 수 없는 코드를 제대로 구분할 수 없는 애플리케이션 프로그래밍 인터페이스(API)의 취약점을 악용하여 SQLi를 실행하는 경우가 많습니다. 변경된 명령이나 쿼리를 감지할 수 없는 경우, 이들 API는 웹 애플리케이션 방화벽(WAF) 또는 인증 조치를 우회하는 등 악의적 요청을 실행하는 데 사용될 수 있습니다.
일반적으로 SQLi는 다음 세 가지 방법 중 하나를 사용하여 수행됩니다.
양성 및 악성 SQL 쿼리의 실제 사례를 보려면 SQL 삽입이란?을 읽어보세요.
SQL 삽입은 가장 널리 퍼진 API 위협 중 하나이지만, 올바른 예방 전략을 통해 효과적으로 방지할 수 있습니다. SQL 삽입을 방지하는 데 유용한 접근 방식에는 데이터베이스 프로시저 제한, 데이터베이스 입력 삭제, 최소 권한 액세스 시행 등이 있습니다.
SQL 삽입은 대체로 공격자의 데이터 입력 및 데이터베이스 함수 조작 능력에 따라 달라집니다. 이러한 입력을 제한하고 수행할 수 있는 데이터베이스 프로시저의 유형을 제한함으로써 조직에서는 무단 또는 악의적인 쿼리의 위험을 최소화할 수 있습니다. 그 방법에는 다음이 포함됩니다.
모든 SQL 데이터베이스에 대한 사용자 입력은 정기적으로 모니터링, 유효성 검사, 삭제하여 악성 코드를 제거해야 합니다. 입력 유효성 검사는 데이터가 미리 정해진 기준에 따라 올바르게 검사되고 형식이 지정되었는지 확인하며, 입력 정리는 유효하지 않거나 안전하지 않은 문자를 제거하고 필요에 따라 다시 포맷하여 입력을 수정(또는 "삭제")합니다. 입력 유효성 검사를 보장하는 방법은 다음과 같습니다.
최소 권한 액세스는 사용자에게 역할에 필요한 만큼만 보호된 리소스에 액세스할 권한을 부여하는 원칙입니다. 예를 들어, 데이터베이스에 대하여 관리자 수준의 권한을 부여하는 사용자 수를 제한하거나 나중에 취소할 수 있는 임시 관리자 수준의 액세스 권한을 사용자에게 부여할 수도 있습니다.
역할 기반 수준에서 사용자 액세스를 제한하면 도난당한 자격 증명을 사용하여 데이터베이스를 침해하는 공격자도 마찬가지로 보호된 데이터를 확인, 수정, 도용, 파기할 수 있는 능력이 제한되므로 침해의 영향을 최소화하는 데 도움이 됩니다. 같은 이유로 조직에서는 여러 웹 사이트 및 애플리케이션에서 데이터베이스에 대한 공유 액세스를 제한해야 합니다.
Cloudflare에서는 강력한 애플리케이션 및 API 보안 포트폴리오를 통해 조직에서 SQLi 공격에 대한 복원력을 개선할 수 있도록 지원합니다.