Quiz - 인증/인가, XSS/CSRF, CORS

이소라·2023년 5월 18일
0

Interview Questions

목록 보기
34/67

1. 인증과 인가에 대해 설명해주세요.

  • 인증은 사용자의 신원을 검증하는 프로세스이고, 인가는 사용자에게 특정 리소스에 접근할 수 있는 권한을 부여하는 프로세스입니다.
  • 성공적인 인증이 된 후에 인가가 실행됩니다.
  • 인증은 일반적으로 ID 토큰을 통해 정보를 전송하고, 인가는 Access 토큰 통해 정보를 전송합니다.

1.1 사용해본 인증 방식에 대해 설명해주세요.

  • 저는 토큰 기반 인증 방식을 사용해본 적 있습니다.
    • 토큰 기반 인증 방식이란 인증 받은 사용자에게 토큰을 발급하고, 로그인이 필요한 작업인 경우 헤더에 토큰을 함께 보내 인증 받은 사용자인지 확인하는 방식을 말합니다.

1.2 Oauth에 대해 설명해주세요.

  • OAuth란 구글, 카카오, 네이버와 같은 다양한 플랫폼의 특정한 사용자 데이터에 접근하기 위해 제 3자 클라이언트가 사용자의 접근 권한을 위임받을 수 있는 표준 프로토콜입니다.



2. XSS와 CSRF에 대해 설명해주세요.

  • XSS는 Cross-site scripting의 약어로 공격자가 웹사이트에 악성 스크립트를 삽입할 수 있는 보안 취약점입니다.

    • 웹 애플리케이션이 충분한 유효성 검사나 인코딩을 하지 않았을 경우 이 공격이 성공합니다.
    • 사용자의 브라우저는 악성 스크립트를 신뢰할 수 없음을 감지할 수 없으므로 쿠키, 세션 토큰 등 민감한 정보에 대한 접근 권한을 부여하거나, 악성 스크립트가 HTML 컨텐츠를 다시 작성하도록 허용합니다.
  • CSRF는 Cross-site request forgery의 약어로 공격자가 사용자의 브라우저에게 사용자의 동의 없이 웹사이트의 백엔드에 요청을 수행하도록 하는 공격을 말합니다.

    • 공격자는 XSS payload를 사용하여 CRSF 공격을 할 수 있습니다.

2.1 XSS와 CSRF의 예방책에 대해 설명해주세요.

  • XSS의 예방책

    • HTML sanitization을 통해 HTML을 검사하고 안전한 태그들로 구성된 새 HTML 문서를 생성하여 사용합니다.
    • 쿠키의 SameSite 속성값으로 Strict나 Lax을 설정하여 교차 출처 요청에 대한 쿠키 전송을 제한합니다.
  • CSRF의 예방책

    • 세션 고유의 CSRF 토큰이 서버에서 브라우저에 제공해야 합니다.
      • 이 토큰은 브라우저에서 폼이 POST될 때마다 포함합니다.
      • 브라우저에서 전송된 토큰과 서버의 세션에 저장된 토큰을 비교하여 값이 불일치할 경우 요청이 중단됩니다.
    • 민감한 정보가 담긴 쿠키는 짧은 생명주기를 가져야 하고, SameSite 속성값이 Strict나 Lax로 설정되어야 합니다.



3. CORS가 무엇인지, 왜 필요한지를 설명해주세요.

  • CORS는 Cross-Origin Resource Sharing의 약어로 웹 브라우저에서 외부 도메인 서버와 통신하기 위한 방식을 표준화한 스펙을 말합니다.
  • 보안 상의 이유로, 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한합니다. 예를 들어, XMLHttpRequest와 Fetch API는 SOP(Same Origin Policy)를 따르므로 자신의 출처와 동일한 리소스만 불러올 수 있습니다.
  • CORS 체제는 브라우저와 서버 간의 안전한 교차 출처 요청 및 데이터 전송을 지원합니다. 최신 브라우저는 XMLHttpRequest나 Fetch API에서 CORS를 사용하여 교차 출처 HTTP 요청의 위험을 완화합니다.

3.1 CORS 해결 경험에 대해 얘기해주세요.

  • CORS가 발생했을 때, 서버에서 HTTP 헤더에 access-control-allow-origin에 허용하고자 하는 도메인을 설정하여 해결했습니다.
  • 프론트엔드에서 개발환경에서 CORS가 발생했을 때는, http-proxy-middleware를 사용하여 브라우저에서 보내는 요청을 서버의 출처와 동일하게 설정하여 해결했습니다.



참고

0개의 댓글