[web] 쿠키와 보안

OrganCow·2024년 8월 30일
0

null_hub

목록 보기
13/14
post-thumbnail

이 글은 Dev quiz 어플리케이션 null의 퀴즈 해설을 위한 글입니다.
보러가기 -> https://github.com/0hhanum/null_ios

questionType: 객관식

========================================

question:
  - 쿠키에 세션 ID 등 민감한 정보를 저장하는 경우, XSS 공격에 주의해야 합니다.
  - Webview 외부에서 주입한 JS 코드로 쿠키에 접근해 정보를 탈취하지 못하도록 하려면
  - 쿠키의 어떤 속성을 사용해야 할까요?
  
========================================  
  
choices:
  - "HttpOnly"
  - "Secure"
  
========================================  
  
answer:
  - A

XSS(Cross-Site-Scripting) 공격

XSS는 웹의 취약점을 이용한 공격으로, 피공격자가 모르게 악의적인 스크립트를 웹 페이지에서 실행하는 공격 방식입니다.

예를 들면, Webview는 외부(모바일 앱)에서 주입한 JS코드를 Webview 내에서 실행하는 기능을 제공합니다.

만약 아래와 같은 코드를 실행하도록 한다면 어떨까요?

(function () {
  const cookies = document.cookie;
  const sessionData = Object.keys(sessionStorage);
  window.ReactNativeWebView.postMessage(
    // RN 웹뷰 객체 메서드
    JSON.stringify({
      cookies,
      sessionData,
    })
  );
})();

피공격자는 본인도 모르게 자신의 쿠키와 웹 스토리지 정보를 웹뷰 외부로 보내게 됩니다.
이런 공격을 예방하려면 기본적으로 쿠키나 웹 스토리지에는 민감한 정보를 저장해서는 안됩니다.

HttpOnly

추가적인 XSS 예방 대책은 쿠키의 HttpOnly 속성입니다. 서버에서 보내는 쿠키에 HttpOnly 플래그를 설정하면
브라우저의 document.cookie API로 해당 쿠키에 접근할 수 없게 되며, 서버로 보내는 요청에만 포함됩니다.

SecureHttpOnly는 민감한 쿠키를 안전하게 보호하기 위한 권장 설정입니다.

0개의 댓글