보안 · 중급
SQL Injection 공격을 방어하기 위한 Prepared Statement 사용 외에, 개발자가 고려해야 할 추가적인 방어 전략은 무엇이 있으며, 각 전략이 어떤 원리로 동작하는지 설명해주세요.
힌트 · 입력값 유효성 검증(화이트리스트), 최소 권한 원칙 적용, 웹 방화벽(WAF) 활용 등이 있습니다. 각 방법은 공격자의 악성 쿼리 실행을 차단하거나 제한하는 역할을 합니다.
입력값 검증최소 권한 원칙웹 방화벽(WAF)에러 메시지 제한정기적인 보안 점검
모범답안
SQL Injection 공격을 방어하기 위해 Prepared Statement는 필수적이지만, 추가적인 방어 전략도 중요합니다.
첫째, 입력값 유효성 검증을 강화해야 합니다. 화이트리스트 방식으로 허용된 문자, 길이, 패턴만 통과시키고 나머지는 거부하는 것이 효과적입니다. 예를 들어, 숫자만 입력받는 필드에 특수문자가 들어오면 에러를 발생시키는 것이죠.
둘째, 최소 권한 원칙을 적용해야 합니다. DB 계정에 필요한 최소한의 권한만 부여하여, 공격자가 SQL Injection에 성공하더라도 시스템 전체에 영향을 미치지 않도록 제한합니다.
셋째, **웹 방화벽(WAF)**을 활용할 수 있습니다. WAF는 악성 SQL Injection 패턴을 탐지하고 차단하여 웹 애플리케이션을 보호합니다.
넷째, 에러 메시지를 제한해야 합니다. DB 에러 메시지에 중요한 정보가 노출되지 않도록, 사용자에게는 일반적인 오류 메시지만 보여주는 것이 좋습니다.
마지막으로, 정기적인 보안 점검을 통해 취약점을 지속적으로 발견하고 개선해야 합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 OWASP / 취약점 면접 질문
- 민감한 정보 노출 (Sensitive Data Exposure) 취약점이 발생하는 주요 원인과 이를 예방하기 위한 기본적인 보안 조치는 무엇인가요?
- 접근 제어 취약점 (Broken Access Control)은 무엇이며, 수평적/수직적 권한 상승과 어떻게 관련이 있나요?
- 보안 설정 오류 (Security Misconfiguration) 취약점이 발생하는 일반적인 시나리오와 이를 예방하기 위한 방법은 무엇인가요?
- 안전한 인증 시스템을 설계할 때, 세션 관리 측면에서 고려해야 할 주요 보안 요소들은 무엇이며, 이를 OWASP 관점에서 어떻게 설명할 수 있을까요?
- Stored XSS와 Reflected XSS 공격의 차이점을 설명하고, 각각의 공격 유형을 효과적으로 방어하기 위한 개발자의 구체적인 구현 방안을 제시해주세요.
- 애플리케이션 개발 초기 단계에서부터 'Insecure Design' 취약점을 예방하기 위해 설계 과정에 어떤 보안 원칙들을 적용해야 할까요? 구체적인 예를 들어 설명해주세요.