데이터베이스 권한을 제한하면 SQLI (SQL Injection) 공격을 방지하는 데 도움이됩니다. 주로 공격자가 취약성을 악용 할 경우 공격자가 발생할 수있는 잠재적 손상을 줄임으로써 주로 공격합니다. 이 접근법은 최소 특권의 원칙에 근거하며, 이는 사용자 또는 애플리케이션 계정에 작업을 수행하는 데 필요한 최소 권한 만 부여하는 것을 의미합니다.
다음은 제한 권한이 어떻게 도움이되는지에 대한 자세한 설명입니다.
** 1. 공격자가 수행 할 수있는 행동의 범위를 제한합니다
데이터베이스에 연결된 응용 프로그램 또는 사용자 계정에 특정 테이블에 대한 읽기 전용 액세스가있는 경우 해당 계정을 통해 SQL 주입을 악용하는 공격자는 데이터를 수정, 삭제 또는 삽입 할 수 없습니다. 이 격리는 공격의 "폭발 반경"을 제한하여 데이터 손상 또는 무단 변화를 방지한다 [3] [9]. 예를 들어, 계정이 선택 쿼리 만 실행 해야하는 경우 삽입, 업데이트, 삭제 또는 관리 권한이 없어야합니다.
** 2. 필요 이상으로 무단 데이터 액세스를 방지합니다
데이터베이스 권한을 필요한 테이블 및 운영으로만 제한함으로써 공격자는 애플리케이션의 합법적 인 요구 범위를 벗어난 민감한 데이터에 액세스 할 수 없습니다. 이는 SQL 주입이 성공하더라도 데이터를 추출하거나 조작하는 공격자의 능력은 손상된 계정이 액세스 할 수있는 것보다 제한된다는 것을 의미합니다 [1] [2] [7].
** 3. 위험한 데이터베이스 기능의 악용을 제한합니다
권한이 너무 광범위한 경우 운영 체제 명령 실행 또는 무제한 저장 프로 시저를 실행하는 것과 같은 일부 데이터베이스 기능을 악용 할 수 있습니다. 권한 제한은 이러한 기능에 대한 액세스를 비활성화하거나 제한하여 SQL 주입 및 관련 익스플로잇의 공격 표면을 줄입니다 [2] [9].
** 4. 특권 에스컬레이션의 위험을 줄입니다
데이터베이스 사용자가 높은 권한 (예 : 관리자 또는 DBA 역할)으로 실행되는 경우 성공적인 SQL 주입은 테이블 작성 또는 삭제 또는 서버에서 명령을 실행하는 등 데이터베이스를 완전히 제어 할 수 있습니다. 권한을 제한하면 공격자가 신청서가 합법적으로 요구하는 것 이상으로 액세스를 확대하지 못하게합니다 [1] [6] [9].
** 5. 방어를 깊이 지원합니다
권한을 제한하는 것은 SQL 주입을 방지하지는 않지만 입력 검증, 매개 변수화 된 쿼리, 저장 프로 시저 및 웹 응용 프로그램 방화벽과 함께 작동하는 중요한 방어 계층입니다. 이 계층화 된 접근법은 한 컨트롤이 실패하더라도 다른 컨트롤이 공격을 포함하도록 보장합니다 [3] [7].
요약하면, 데이터베이스 권한 제한은 타협 된 계정이 의도 한 범위를 넘어 유해한 행동을 수행 할 수 없도록함으로써 SQL 주입의 잠재적 영향을 줄입니다. 이 격리는 데이터 손실, 무단 데이터 수정 및 권한 에스컬레이션을 방지하여 SQL 주입 공격이 덜 손상되고 관리하기 쉬운 [1] [2] [3] [6] [9]
인용 :
[1] https://cheatsheetseries.owasp.org/cheatsheets/sql_injection_prevention_cheat_sheet.html
[2] https://www.esecurityplanet.com/threats/how-to-prevent-sql-injection-attacks/
[3] https://www.legitsecurity.com/aspm-knowledge-base/how-to-prevent-sql-injection
[4] https://users.soe.ucsc.edu/~eaugusti/archive/365-spring16/365-files/lectures/365-lec14-security.pdf
[5] https://www.reddit.com/r/sql/comments/1c5m63s/sql_injection_prevention_help/
[6] https://security.stackexchange.com/questions/90247/sql-injection-attack-why-not-just-adjust-permissions
[7] https://www.cloudflare.com/learning/security/threats/how-to-prevent-sql-injection/
[8] https://stackoverflow.com/questions/1263218/if-my-my-database-user-is-seadoley-why-do-ned-to-worry-about-sql-injection
[9] https://www.enterprisedb.com/blog/protecting-against-sql-injection