HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/
🔐
Spring Security
/
🎇
HeaderWriterFilter
🎇

HeaderWriterFilter

HeaderWriterFilter
  • 응답 헤더에 보안 관련 헤더를 추가함
    • 관련 이슈에 대해 기본적인 방어 기능만 제공하는것으로 완벽하게 방어되지 않음
    • 또한 브라우저마다 다르게 동작할 수 있으므로 유의해야함
    • XContentTypeOptionsHeaderWriter — MIME sniffing 공격 방어
      • 상황 : 웹 서버에 image.jpg라는 파일을 올려놨는데 확장자는 jpg인데 안에는 자바스크립트가 들어있음. 근데 이것을 브라우저에서 요청해서 받을 때, jpg이니까 jpg로만 해석하게 해야하는 것임. nosniff 해주면 text로 그 데이터를 해석하지 않고 jpg로만 이해함
      • 브라우저에서 MIME sniffing을 사용하여 Request Content Type 을 추측 할 수 있는데 이것은 XSS 공격에 악용될 수 있음
      • 지정된 MIME 형식 이외의 다른 용도로 (브라우저에서) 사용하고자 하는 것을 차단
      • X-Content-Type-Options: nosniff
        MIME 형식의 보안위협 완화: X-Content-Type-Options 헤더
        bullet; 웹 해킹 훈련장 172.16.15.116 40080/tcp 대상 공개용 도구 기반의 홈페이지 취약점 점검 실습 (20200507) • Kali Linux 2020.1b 64bit 설치 설명서 (MS 윈도우 10, VMware 플레이어) (20200325) • VirtualBox 가상머신으로 GSM CE 6.0.2 설치 설명서 (OpenVAS) (20200125) • Kali Linux 2019.4 64bit Light 배포판 설치 설명서 (권장) (20191202) •
        MIME 형식의 보안위협 완화: X-Content-Type-Options 헤더
        https://webhack.dynu.net/?idx=20161120.001
        MIME 형식의 보안위협 완화: X-Content-Type-Options 헤더
    • XXssProtectionHeaderWriter — 브라우저에 내장된 XSS(Cross-Site Scripting) 필터 활성화
      • XSS — 웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말함
      • 일반적으로 브라우저에는 XSS공격을 방어하기 위한 필터링 기능이 내장되어 있음
      • 물론 해당 필터로 XSS공격을 완벽하게 방어하지는 못하지만 XSS 공격의 보호에 많은 도움이 됨
      • X-XSS-Protection: 1; mode=block
      • XSS 공격 시, 웹 페이지 자체를 사용자에게 보여주지 말라는 옵션
      • X-XSS-Protection헤더 시험 페이지
        bullet; 웹 해킹 훈련장 172.16.15.116 40080/tcp 대상 공개용 도구 기반의 홈페이지 취약점 점검 실습 (20200507)
        X-XSS-Protection헤더 시험 페이지
        https://webhack.dynu.net/?idx=20161119.001
    • CacheControlHeadersWriter — 캐시를 사용하지 않도록 설정
      • 브라우저 캐시 설정에 따라 사용자가 인증 후 방문한 페이지를 로그 아웃한 후 캐시 된 페이지를 악의적인 사용자가 볼 수 있음
      • Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0
    • XFrameOptionsHeaderWriter — clickjacking 공격 방어
      • 웹 사용자가 자신이 클릭하고 있다고 인지하는 것과 다른 어떤 것을 클릭하게 속이는 악의적인 기법
      • 보통 사용자의 인식 없이 실행될 수 있는 임베디드 코드나 스크립트의 형태
      • X-Frame-Options: DENY
      • 외부 사이트에 의한 Framing을 원천 금지 시키도록 하는 옵션
      • 클릭재킹 - 위키백과, 우리 모두의 백과사전
        클릭재킹(Clickjacking, User Interface redress attack, UI redress attack, UI redressing)은 웹 사용자가 자신이 클릭하고 있다고 인지하는 것과 다른 어떤 것을 클릭하게 속이는 악의적인 기법으로써 잠재적으로 공격자는 비밀 정보를 유출시키거나 그들의 컴퓨터에 대한 제어를 획득할 수 있게 된다. 이것은 다양한 웹 브라우저들과 컴퓨팅 플랫폼들에서의 취약점으로서 브라우저 보안 이슈이다.
        클릭재킹 - 위키백과, 우리 모두의 백과사전
        https://ko.wikipedia.org/wiki/%ED%81%B4%EB%A6%AD%EC%9E%AC%ED%82%B9
        클릭재킹 - 위키백과, 우리 모두의 백과사전
    • HstsHeaderWriter — HTTP 대신 HTTPS만을 사용하여 통신해야함을 브라우저에 알림 (HTTPS 설정 시 관련 헤더 추가됨)
      • Strict-Transport-Security: max-age=31536000 ; includeSubDomains
      • max-age 초단위. 1년임. 1년동안 Https 프로토콜로 접근해야 한다는 의미
      • 서브 도메인에도 이 규칙이 모두 적용된다는 의미
      • Strict-Transport-Security - HTTP | MDN
        HTTP Strict-Transport-Security response header (종종 로 약칭) 는 HTTP 대신 HTTPS만을 사용하여 통신해야한다고 웹사이트가 브라우저에 알리는 보안 기능. Strict-Transport-Security: max-age= Strict-Transport-Security: max-age= ; includeSubDomains Strict-Transport-Security: max-age= ; preload 이 사이트가 HTTPS 로만 접근되어야 한다고 기억되어야 하는 시간(초). includeSubDomains Optional 이 옵션이 적용되면, 이 사이트의 모든 서브도메인에 규칙이 적용된다는 것을 의미한다.
        Strict-Transport-Security - HTTP | MDN
        https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Strict-Transport-Security
        Strict-Transport-Security - HTTP | MDN