쿠키와 보안

About web, 보안
2024/08/23

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는 민감한 쿠키를 안전하게 보호하기 위한 권장 설정입니다.