보안 · 중급
안전한 인증 시스템을 설계할 때, 세션 관리 측면에서 고려해야 할 주요 보안 요소들은 무엇이며, 이를 OWASP 관점에서 어떻게 설명할 수 있을까요?
힌트 · 세션 토큰의 무작위성, 적절한 세션 타임아웃 설정, 세션 고정(Session Fixation) 방지, 그리고 HttpOnly 및 Secure 플래그를 사용한 쿠키 관리가 중요합니다.
세션 ID쿠키 보안HTTPOnly세션 하이재킹OWASP ASVS
모범답안
안전한 인증 시스템 설계 시 세션 관리 측면에서 중요한 보안 요소는 크게 네 가지로 볼 수 있습니다.
첫째, 예측 불가능한 세션 ID를 생성해야 합니다. 충분히 긴 길이와 무작위성을 확보하여 세션 하이재킹 공격을 어렵게 만들어야 합니다. OWASP ASVS에서는 이를 위해 강력한 난수 생성기를 사용할 것을 권고합니다.
둘째, 적절한 세션 타임아웃을 설정해야 합니다. 너무 짧으면 사용자 불편을 초래하고, 너무 길면 공격자가 세션을 탈취했을 때 악용할 수 있는 시간이 늘어납니다. 서비스 특성에 맞춰 적절한 균형점을 찾아야 합니다.
셋째, 세션 고정(Session Fixation) 공격을 방지해야 합니다. 로그인 성공 후에는 반드시 기존 세션 ID를 무효화하고 새로운 세션 ID를 발급해야 합니다.
넷째, 쿠키 보안 설정이 중요합니다. HttpOnly 플래그를 설정하여 클라이언트 측 스크립트에서 쿠키에 접근하는 것을 막고, Secure 플래그를 설정하여 HTTPS 연결에서만 쿠키가 전송되도록 해야 합니다. OWASP에서는 이러한 쿠키 보안 설정을 통해 XSS 공격 및 중간자 공격으로부터 세션을 보호할 것을 강조합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 OWASP / 취약점 면접 질문
- 접근 제어 취약점 (Broken Access Control)은 무엇이며, 수평적/수직적 권한 상승과 어떻게 관련이 있나요?
- 보안 설정 오류 (Security Misconfiguration) 취약점이 발생하는 일반적인 시나리오와 이를 예방하기 위한 방법은 무엇인가요?
- SQL Injection 공격을 방어하기 위한 Prepared Statement 사용 외에, 개발자가 고려해야 할 추가적인 방어 전략은 무엇이 있으며, 각 전략이 어떤 원리로 동작하는지 설명해주세요.
- Stored XSS와 Reflected XSS 공격의 차이점을 설명하고, 각각의 공격 유형을 효과적으로 방어하기 위한 개발자의 구체적인 구현 방안을 제시해주세요.
- 애플리케이션 개발 초기 단계에서부터 'Insecure Design' 취약점을 예방하기 위해 설계 과정에 어떤 보안 원칙들을 적용해야 할까요? 구체적인 예를 들어 설명해주세요.
- 사용자 개인 정보와 같은 민감 데이터를 안전하게 처리하기 위한 개발자의 역할은 무엇이며, 데이터 저장 및 전송 시 발생할 수 있는 'Sensitive Data Exposure' 취약점을 어떻게 방어할 수 있을까요?