Prepared Statements (Parameterized Queries): 입력값을 직접 SQL 쿼리에 삽입하지 말고, 파라미터화된 쿼리를 사용하여 입력값을 쿼리에 전달하는 방식을 사용,입력된 쿼리와 데이터를 분리
ORM (Object-Relational Mapping): ORM은 데이터베이스와 애플리케이션 코드 사이의 추상화 계층을 제공하여 SQL 쿼리를 직접 작성하지 않고도 데이터베이스와 상호 작용할 수 있게 해줌
입력 검증 및 제한: 사용자 입력값을 엄격하게 검증하고 허용되지 않은 문자나 패턴을 걸러내는 등의 필터링을 수행
충분한 인증과 권한 관리: 데이터베이스 사용자에게 최소한의 권한만 부여하여, 애플리케이션에서 필요한 작업만 수행할 수 있도록 제어
백엔드 밸리데이션: 클라이언트 사이드에서 입력값을 검증하는 것이 아니라 서버 사이드에서도 입력값을 검증하고 처리
웹 방화벽 사용: 웹 애플리케이션 방화벽을 사용하여 SQL Injection과 같은 공격 시도를 탐지하고 차단
정적 쿼리 사용: 동적으로 생성되는 쿼리보다는 정적인 쿼리를 사용하여 쿼리의 구조를 변경할 수 없도록
에러 메시지 최소화: 사용자에게 노출되는 에러 메시지를 최소화하여 악의적인 사용자가 데이터베이스 구조를 파악하는 것을 방지
보안 패치 및 업데이트: 데이터베이스 시스템과 애플리케이션 프레임워크를 최신 상태로 유지하여 이미 알려진 취약점을 보완
테스트와 코드 검토: 보안 전문가나 개발자들이 코드를 검토하고 테스트하여 취약점을 발견하고 수정
'의문점 공부하기 > 📌 Java' 카테고리의 다른 글
📌 의존성 주입 방법은 무엇이 있을까 ++ ? (0) | 2023.08.22 |
---|---|
📌 XSS 공격이 무엇이고, 어떻게 피할 수 있을까!?!? (0) | 2023.08.21 |
📌 스프링 MVC와 struts의 차이에 대하여 (0) | 2023.08.16 |
📌 그렇다면 쿠키를 사용할 수 없을 때 세션을 대신 사용할 수 있을까!?!??!???? (0) | 2023.08.14 |
📌 세션 과정 알아보기 (0) | 2023.08.11 |