의문점 공부하기/📌 Java

📌 SQL Injection을 피할 수 있는 방법은 뭐가 있을까??

아리빠 2023. 8. 18. 18:05

Prepared Statements (Parameterized Queries): 입력값을 직접 SQL 쿼리에 삽입하지 말고, 파라미터화된 쿼리를 사용하여 입력값을 쿼리에 전달하는 방식을 사용,입력된 쿼리와 데이터를 분리

ORM (Object-Relational Mapping): ORM은 데이터베이스와 애플리케이션 코드 사이의 추상화 계층을 제공하여 SQL 쿼리를 직접 작성하지 않고도 데이터베이스와 상호 작용할 수 있게 해줌

 

입력 검증 및 제한: 사용자 입력값을 엄격하게 검증하고 허용되지 않은 문자나 패턴을 걸러내는 등의 필터링을 수행

충분한 인증과 권한 관리: 데이터베이스 사용자에게 최소한의 권한만 부여하여, 애플리케이션에서 필요한 작업만 수행할 수 있도록 제어

백엔드 밸리데이션: 클라이언트 사이드에서 입력값을 검증하는 것이 아니라 서버 사이드에서도 입력값을 검증하고 처리

웹 방화벽 사용: 웹 애플리케이션 방화벽을 사용하여 SQL Injection과 같은 공격 시도를 탐지하고 차단

정적 쿼리 사용: 동적으로 생성되는 쿼리보다는 정적인 쿼리를 사용하여 쿼리의 구조를 변경할 수 없도록 

에러 메시지 최소화: 사용자에게 노출되는 에러 메시지를 최소화하여 악의적인 사용자가 데이터베이스 구조를 파악하는 것을 방지

보안 패치 및 업데이트: 데이터베이스 시스템과 애플리케이션 프레임워크를 최신 상태로 유지하여 이미 알려진 취약점을 보완

테스트와 코드 검토: 보안 전문가나 개발자들이 코드를 검토하고 테스트하여 취약점을 발견하고 수정