웹 보안 신입 트러블슈팅 면접

웹 보안 신입 · 취준 (0~1년) 트러블슈팅 10문항 조회수 30 · 2026-08-20 (목) 07:41:55
1 XSS 공격
Easy

Q. 사용자가 게시판에 글을 작성한 후, 다른 사용자들이 해당 게시글을 볼 때마다 alert 창이 뜨는 현상이 발생했습니다. 어떤 보안 문제가 발생한 것이고, 어떻게 원인을 파악하고 해결하시겠습니까?

사용자가 입력한 내용이 그대로 브라우저에서 실행되고 있는지 확인해보세요.

A. 모범답안

이는 XSS(Cross-Site Scripting) 공격으로 판단됩니다. 먼저 문제가 발생한 게시글의 내용을 데이터베이스에서 직접 확인하여 스크립트 태그가 포함되어 있는지 확인합니다. 브라우저 개발자 도구에서 HTML 소스를 확인하여 스크립트가 실제로 실행되고 있는지 검증합니다. 해결 방법으로는 사용자 입력값을 저장하기 전 또는 출력하기 전에 HTML 이스케이핑 처리를 적용해야 합니다. 재발 방지를 위해 모든 사용자 입력 필드에 대해 입력 검증과 출력 인코딩을 일관되게 적용하고, CSP(Content Security Policy) 헤더를 설정합니다.

핵심 포인트
  • • XSS 공격임을 식별
  • • 데이터베이스와 HTML 소스 확인을 통한 원인 분석
  • • HTML 이스케이핑 또는 출력 인코딩 적용
  • • CSP 헤더 설정을 통한 재발 방지
답변에 넣으면 좋은 키워드
XSS HTML 이스케이핑 입력 검증 출력 인코딩 CSP 스크립트 태그
실무에서는

실제 커뮤니티 사이트나 게시판 서비스에서 사용자 입력을 처리할 때 반드시 적용해야 하는 기본 보안 대응입니다.

Follow-up 질문

Stored XSS와 Reflected XSS의 차이점은 무엇이며, 각각 어떻게 방어해야 할까요?

2 SQL Injection
Easy

Q. 로그인 페이지에서 특정 사용자가 비밀번호 없이 로그인에 성공하는 문제가 발견되었습니다. 로그를 확인해보니 ID 입력란에 'admin' OR '1'='1' 같은 문자열이 입력된 것을 확인했습니다. 어떤 보안 취약점이고, 어떻게 디버깅하고 해결하시겠습니까?

사용자 입력이 SQL 쿼리문에 직접 결합되어 실행되고 있는지 확인해보세요.

A. 모범답안

이는 SQL Injection 취약점입니다. 먼저 로그인 처리 코드에서 SQL 쿼리문이 어떻게 작성되어 있는지 확인하고, 사용자 입력이 문자열 결합 방식으로 쿼리에 포함되는지 검토합니다. 실제로 실행되는 SQL 쿼리를 로깅하여 OR 조건이 추가되어 항상 참이 되는 쿼리가 실행되는지 확인합니다. 해결 방법으로는 Prepared Statement 또는 Parameterized Query를 사용하여 사용자 입력을 쿼리 파라미터로 바인딩해야 합니다. 추가로 입력값 검증, 최소 권한 원칙의 데이터베이스 계정 사용, 에러 메시지에서 데이터베이스 정보 노출 방지 등을 적용하여 재발을 방지합니다.

핵심 포인트
  • • SQL Injection 공격임을 식별
  • • 쿼리 로깅을 통한 실행 쿼리 분석
  • • Prepared Statement 사용으로 해결
  • • 입력 검증 및 최소 권한 원칙 적용
답변에 넣으면 좋은 키워드
SQL Injection Prepared Statement Parameterized Query 입력 검증 쿼리 바인딩
실무에서는

데이터베이스를 사용하는 모든 웹 애플리케이션에서 가장 빈번하게 발생하는 보안 취약점 중 하나입니다.

Follow-up 질문

ORM을 사용하면 SQL Injection이 완전히 방지되나요? 주의해야 할 점은 무엇인가요?

3 CSRF
Medium

Q. 사용자가 로그인한 상태에서 이메일의 링크를 클릭했더니, 본인도 모르게 비밀번호가 변경되거나 게시글이 작성되는 문제가 발생했습니다. 서버 로그를 확인하니 정상적인 세션으로 요청이 들어온 것으로 보입니다. 어떤 공격이며, 어떻게 원인을 분석하고 방어하시겠습니까?

요청이 사용자가 의도한 곳에서 발생한 것인지 확인할 방법을 생각해보세요.

A. 모범답안

이는 CSRF(Cross-Site Request Forgery) 공격입니다. 먼저 문제가 발생한 요청의 Referer 헤더를 확인하여 외부 사이트에서 요청이 발생했는지 검토합니다. 이메일의 링크나 악의적인 사이트의 HTML 소스를 분석하여 자동으로 폼 제출이나 요청이 발생하는 코드가 있는지 확인합니다. 해결 방법으로는 CSRF 토큰을 생성하여 폼이나 요청 헤더에 포함시키고, 서버에서 이를 검증하는 로직을 추가합니다. SameSite 쿠키 속성을 Strict 또는 Lax로 설정하고, 중요한 작업에는 재인증을 요구하며, Referer 헤더 검증을 추가로 적용합니다.

핵심 포인트
  • • CSRF 공격임을 식별
  • • Referer 헤더와 요청 출처 분석
  • • CSRF 토큰 생성 및 검증 구현
  • • SameSite 쿠키 속성 설정
답변에 넣으면 좋은 키워드
CSRF CSRF 토큰 SameSite Referer 재인증 세션
실무에서는

은행 거래, 비밀번호 변경, 결제 등 중요한 작업을 처리하는 모든 웹 서비스에서 필수적으로 방어해야 하는 공격입니다.

Follow-up 질문

CSRF 토큰은 어떻게 생성하고 관리해야 안전한가요? 토큰의 유효기간은 어떻게 설정해야 할까요?

4 세션 관리
Easy

Q. 사용자가 로그아웃을 했는데도 브라우저의 뒤로가기 버튼을 누르면 로그인이 필요한 페이지가 그대로 보이는 문제가 발생했습니다. 어떤 원인이며, 어떻게 해결하시겠습니까?

브라우저 캐시와 서버 세션 검증의 관계를 생각해보세요.

A. 모범답안

이는 브라우저 캐시 문제로, 로그아웃 후에도 이전에 로드된 페이지가 캐시에서 표시되는 현상입니다. 먼저 네트워크 탭에서 뒤로가기 시 실제 서버 요청이 발생하는지, 아니면 캐시에서 로드되는지 확인합니다. 서버에서 로그인이 필요한 페이지에 대해 Cache-Control 헤더를 no-store, no-cache, must-revalidate로 설정하여 캐싱을 방지합니다. 또한 모든 보호된 페이지에서 세션 유효성을 검증하는 미들웨어를 적용하고, 로그아웃 시 서버 세션을 완전히 삭제하며 클라이언트 쿠키도 제거합니다. 추가로 Pragma: no-cache 헤더도 함께 설정하여 하위 호환성을 확보합니다.

핵심 포인트
  • • 브라우저 캐시 문제 식별
  • • Cache-Control 헤더 설정으로 캐싱 방지
  • • 세션 유효성 검증 미들웨어 적용
  • • 로그아웃 시 세션 및 쿠키 완전 삭제
답변에 넣으면 좋은 키워드
브라우저 캐시 Cache-Control 세션 검증 no-store 로그아웃 쿠키
실무에서는

인터넷 뱅킹이나 관리자 페이지 등 보안이 중요한 서비스에서 반드시 처리해야 하는 세션 관리 이슈입니다.

Follow-up 질문

세션 고정 공격(Session Fixation)은 무엇이며, 로그인 시 어떻게 방어해야 할까요?

5 파일 업로드
Medium

Q. 이미지 업로드 기능에서 사용자가 PHP 파일을 업로드한 후, 해당 파일에 직접 접근하여 서버에서 임의의 코드가 실행되는 문제가 발생했습니다. 어떻게 원인을 파악하고 해결하시겠습니까?

파일의 확장자 검증과 저장 위치, 실행 권한을 함께 고려해보세요.

A. 모범답안

이는 악성 파일 업로드를 통한 원격 코드 실행 취약점입니다. 먼저 파일 업로드 코드에서 확장자 검증이 제대로 이루어지는지, 클라이언트 측 검증만 있는지 확인합니다. 업로드된 파일의 실제 MIME 타입을 서버에서 검증하고, 파일 헤더(매직 넘버)를 확인하여 실제 파일 형식을 판별합니다. 해결 방법으로는 화이트리스트 기반의 확장자 검증을 서버에서 수행하고, 업로드 디렉토리의 스크립트 실행 권한을 제거합니다. 파일명을 랜덤하게 변경하여 저장하고, 업로드 디렉토리를 웹 루트 외부에 배치하거나, 정적 파일 서버를 통해 제공하여 스크립트 실행을 원천 차단합니다.

핵심 포인트
  • • 파일 확장자와 MIME 타입 검증 부족 식별
  • • 파일 헤더 검증을 통한 실제 파일 형식 확인
  • • 화이트리스트 기반 검증 및 실행 권한 제거
  • • 업로드 디렉토리 분리 및 파일명 랜덤화
답변에 넣으면 좋은 키워드
파일 업로드 MIME 타입 화이트리스트 매직 넘버 실행 권한 원격 코드 실행
실무에서는

프로필 사진, 첨부파일 등 파일 업로드 기능이 있는 모든 웹 서비스에서 발생할 수 있는 심각한 보안 위협입니다.

Follow-up 질문

이미지 파일 내부에 악성 코드를 삽입하는 공격은 어떻게 방어할 수 있을까요?

6 인증/인가
Medium

Q. 일반 사용자가 URL을 직접 수정하여 관리자 페이지에 접근하거나, 다른 사용자의 개인정보를 조회할 수 있는 문제가 발견되었습니다. 어떤 보안 문제이며, 어떻게 디버깅하고 해결하시겠습니까?

인증(Authentication)과 인가(Authorization)의 차이를 생각하고, 각각이 제대로 구현되어 있는지 확인해보세요.

A. 모범답안

이는 인가(Authorization) 처리 누락으로 인한 접근 통제 실패입니다. 먼저 문제가 발생한 엔드포인트의 코드를 확인하여 로그인 여부만 확인하고 권한 검증은 하지 않는지 점검합니다. URL 파라미터로 전달되는 사용자 ID 등을 세션의 사용자 정보와 비교하는 로직이 있는지 확인합니다. 해결 방법으로는 모든 보호된 리소스에 대해 역할 기반 접근 제어(RBAC)를 구현하고, 미들웨어나 데코레이터를 통해 권한 검증을 일관되게 적용합니다. 사용자가 요청한 리소스의 소유자인지 확인하는 로직을 추가하고, 최소 권한 원칙에 따라 필요한 권한만 부여합니다. API 응답에서도 권한이 없는 데이터는 필터링하여 반환합니다.

핵심 포인트
  • • 인가 처리 누락 문제 식별
  • • 세션 정보와 요청 리소스의 소유권 검증
  • • 역할 기반 접근 제어(RBAC) 구현
  • • 미들웨어를 통한 일관된 권한 검증
답변에 넣으면 좋은 키워드
인가 Authorization RBAC 접근 통제 권한 검증 최소 권한 원칙
실무에서는

마이페이지, 주문 내역, 관리자 페이지 등 사용자별로 다른 권한이 필요한 모든 기능에서 필수적인 보안 처리입니다.

Follow-up 질문

JWT를 사용할 때 권한 정보를 토큰에 포함시키는 것과 서버에서 매번 확인하는 것의 장단점은 무엇인가요?

7 비밀번호 보안
Easy

Q. 데이터베이스가 유출되어 사용자 비밀번호가 노출되는 사고가 발생했습니다. 조사 결과 비밀번호가 평문으로 저장되어 있었습니다. 이 문제를 어떻게 해결하고, 기존 사용자들에 대해서는 어떻게 대응해야 할까요?

단방향 암호화와 솔트(Salt)의 개념을 생각해보세요.

A. 모범답안

비밀번호를 평문으로 저장한 것이 근본 원인입니다. 즉시 모든 사용자에게 비밀번호 유출 사실을 공지하고 강제 비밀번호 변경을 요구해야 합니다. 새로운 비밀번호 저장 방식으로 bcrypt, scrypt, Argon2 등의 단방향 해시 함수를 사용하도록 코드를 수정합니다. 각 비밀번호마다 고유한 솔트(Salt)를 생성하여 함께 해싱하도록 구현하여 레인보우 테이블 공격을 방어합니다. 비밀번호 정책을 강화하여 최소 길이, 복잡도 요구사항을 추가하고, 비밀번호 변경 이력을 관리하여 이전 비밀번호 재사용을 방지합니다. 추가로 2단계 인증(2FA) 도입을 검토합니다.

핵심 포인트
  • • 평문 저장의 위험성 인식 및 즉시 공지
  • • bcrypt 등 단방향 해시 함수 적용
  • • 솔트를 사용한 해싱으로 레인보우 테이블 공격 방어
  • • 비밀번호 정책 강화 및 2FA 도입
답변에 넣으면 좋은 키워드
bcrypt 해시 솔트 단방향 암호화 레인보우 테이블 2FA
실무에서는

사용자 인증 시스템을 구축하는 모든 서비스에서 가장 기본적이면서도 중요한 보안 요구사항입니다.

Follow-up 질문

bcrypt의 work factor는 무엇이며, 시간이 지남에 따라 어떻게 조정해야 할까요?

8 HTTPS/TLS
Easy

Q. 웹사이트에 HTTPS를 적용했는데도 브라우저에서 '안전하지 않음' 경고가 표시되고, 일부 사용자들이 로그인 정보가 노출될 수 있다는 우려를 제기했습니다. 어떤 문제들이 있을 수 있으며, 어떻게 확인하고 해결하시겠습니까?

Mixed Content와 인증서 유효성을 함께 확인해보세요.

A. 모범답안

먼저 브라우저 개발자 도구의 콘솔과 네트워크 탭에서 Mixed Content 경고를 확인합니다. HTTPS 페이지 내에서 HTTP로 로드되는 이미지, 스크립트, CSS 등의 리소스가 있는지 점검하고, 모든 리소스를 HTTPS로 변경합니다. 인증서의 유효기간, 도메인 일치 여부, 인증 기관의 신뢰성을 확인하고, 만료되었거나 자체 서명된 인증서인 경우 정식 인증서로 교체합니다. HSTS(HTTP Strict Transport Security) 헤더를 설정하여 브라우저가 항상 HTTPS로 접속하도록 강제합니다. 추가로 TLS 버전이 1.2 이상인지 확인하고, 약한 암호화 스위트는 비활성화합니다.

핵심 포인트
  • • Mixed Content 문제 확인 및 모든 리소스 HTTPS 전환
  • • SSL/TLS 인증서 유효성 검증
  • • HSTS 헤더 설정으로 HTTPS 강제
  • • 안전한 TLS 버전 및 암호화 스위트 사용
답변에 넣으면 좋은 키워드
HTTPS Mixed Content SSL 인증서 HSTS TLS 암호화
실무에서는

로그인, 결제 등 민감한 정보를 다루는 모든 웹사이트에서 필수적으로 적용해야 하는 전송 계층 보안입니다.

Follow-up 질문

HSTS Preload는 무엇이며, 적용 시 주의해야 할 점은 무엇인가요?

9 API 보안
Medium

Q. REST API에서 특정 사용자가 짧은 시간에 수천 건의 요청을 보내 서버가 느려지고, 정상 사용자들이 서비스를 이용하지 못하는 문제가 발생했습니다. 어떻게 원인을 파악하고 대응하시겠습니까?

Rate Limiting과 요청 출처 분석을 함께 고려해보세요.

A. 모범답안

이는 API 남용 또는 DDoS 공격으로 판단됩니다. 먼저 서버 로그와 모니터링 도구를 통해 비정상적으로 많은 요청을 보내는 IP 주소나 사용자 계정을 식별합니다. 요청 패턴을 분석하여 자동화된 봇인지, 악의적인 공격인지 판단합니다. 즉각적인 대응으로 해당 IP를 차단하고, Rate Limiting을 구현하여 특정 시간 동안 허용되는 요청 수를 제한합니다. IP 기반, 사용자 기반, API 엔드포인트별로 다른 제한을 설정하고, 초과 시 429 상태 코드를 반환합니다. 추가로 API 키 또는 토큰 기반 인증을 강화하고, CAPTCHA를 도입하며, CDN이나 WAF를 통해 트래픽을 필터링합니다.

핵심 포인트
  • • 로그 분석을 통한 비정상 트래픽 식별
  • • Rate Limiting 구현으로 요청 수 제한
  • • IP 차단 및 429 상태 코드 반환
  • • API 키 인증 강화 및 WAF 도입
답변에 넣으면 좋은 키워드
Rate Limiting DDoS API 남용 429 상태 코드 WAF 봇 방어
실무에서는

공개 API, 검색 기능, 로그인 시도 등 반복적인 요청이 가능한 모든 엔드포인트에서 필요한 보안 조치입니다.

Follow-up 질문

Token Bucket과 Leaky Bucket 알고리즘의 차이점은 무엇이며, 어떤 상황에서 각각 사용하나요?

10 쿠키 보안
Medium

Q. 사용자가 공용 와이파이에서 서비스를 이용한 후, 다른 사람이 해당 사용자의 계정으로 로그인되는 세션 하이재킹 문제가 보고되었습니다. 쿠키 설정과 관련하여 어떤 문제가 있을 수 있으며, 어떻게 해결하시겠습니까?

쿠키의 보안 속성들(Secure, HttpOnly, SameSite)을 점검해보세요.

A. 모범답안

세션 쿠키의 보안 속성이 제대로 설정되지 않아 쿠키가 탈취된 것으로 판단됩니다. 먼저 현재 쿠키 설정을 확인하여 Secure, HttpOnly, SameSite 속성이 적용되어 있는지 점검합니다. Secure 플래그를 설정하여 HTTPS 연결에서만 쿠키가 전송되도록 하고, HttpOnly 플래그로 자바스크립트를 통한 쿠키 접근을 차단하여 XSS 공격을 방어합니다. SameSite 속성을 Strict 또는 Lax로 설정하여 CSRF 공격을 방어합니다. 세션 ID를 주기적으로 재생성하고, 로그인 시 이전 세션을 무효화하며, 사용자의 IP나 User-Agent 변경을 감지하여 세션을 무효화하는 추가 검증을 구현합니다.

핵심 포인트
  • • 쿠키 보안 속성 누락 문제 식별
  • • Secure, HttpOnly, SameSite 플래그 설정
  • • 세션 ID 주기적 재생성
  • • IP/User-Agent 변경 감지 및 세션 무효화
답변에 넣으면 좋은 키워드
쿠키 Secure HttpOnly SameSite 세션 하이재킹 세션 ID
실무에서는

로그인 세션을 유지하는 모든 웹 애플리케이션에서 쿠키 보안 설정은 필수적인 보안 요구사항입니다.

Follow-up 질문

세션을 쿠키 대신 LocalStorage에 저장하면 어떤 보안 문제가 있을까요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!