| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- write-up
- web hacking
- XSS
- 정보보호
- cert
- 워게임
- Bandit
- 정보보안
- Cross-Site Scripting
- CTF
- SoC
- IR
- 사이버 보안
- 블루팀
- THM
- http
- Cyber Security
- 해킹 스터디
- OverTheWire
- 해커
- linux
- 모의해킹
- Blue Team
- 해킹
- 리눅스
- 리눅스 기초
- 보안 관제
- 보안 스터디
- TryHackMe
- Web
- Today
- Total
AnbyMata의 해킹 노트
[THM] Web Application Basics - EP.4 (Task 9~11). 完 본문
[THM] Web Application Basics - EP.4 (Task 9~11). 完
AnbyMata 2026. 1. 23. 22:00TryHackMe - "Web Application Basics". Task 9~11. Write-up + Extra Study!

출처: https://tryhackme.com/room/webapplicationbasics
Web Application Basics
Learn the basics of web applications: HTTP, URLs, request methods, response codes, and headers.
tryhackme.com
[9] Security Headers
Security Headers = Web Application의 전반적인 보안 레벨을 올릴수 있는 HTTP의 Header들
총 4가지의 Security Header들을 다룹니다.
- 1. Content-Security-Policy (CSP)
- 2. Strict-Transport-Security (HSTS)
- 3. X-Content-Type-Options
- 4. Referrer-Policy
"https://securityheaders.com/" 사이트를 통해서 모든 웹 사이트의 Security Header들을 찾아볼 수 있습니다.
[9-1] Content-Security-Policy (CSP)
- CSP = Cross-Site Scripting (XSS)와 같은 공격을 방지하기 위한 추가적인 보안 계층 (Security Layer)
- 관리자가 안전하다고 판단한 domain(도메인) / resource(리소스)만을 명시
- 이를 통해 웹 페이지에서 허용되는 컨텐츠의 출처를 제한 → 출처가 불분명하거나 허용되지 않은 컨텐츠 차단
- CSP Header 예시

대표적인 CSP Directive(지시자)
1. default-src
- 기본 리소스 로딩 규칙을 정의함
- 'self' 는 현재 웹 사이트 (자신의 도메인)에서만 리소스를 불러올 수 있도록 제한
- default-src 'self' = 스크립트·스타일·이미지 등 모든 리소스가 해당 웹사이트 출처에서만 허용되고, 외부 도메인에서 제공되는 리소스는 차단됨
- 'self' 뒤에 특정 도메인 주소 추가 → 그 도메인에서 제공되는 리소스도 예외적으로 허용됨
2. script-src
- 어디서 JavaScript 같은 스크립트를 로드할지 지정함
- 'self' 는 현재 웹 사이트(자신의 도메인)에서 제공하는 스크립트만 허용함
- script-src 'self' = 해당 웹사이트 JavaScript 스트립트만 허용되고, 외부 도메인에서 제공되는 스크립트는 차단됨
- 'self' 뒤에 특정 도메인 주소를 추가 → 현재 사이트 외에 추가 도메인에서의 스크립트 허용됨
3. style-src
- CSS 스타일 시트를 어디에서 로드할지 지정함
- 'self' 는 현재 웹 사이트(자신의 도메인)에서 제공하는 CSS 스타일 시트만 허용함
- style-src 'self' = 해당 웹사이트의 CSS 파일만 허용되고, 외부 도메인에서 제공되는 CSS 파일은 차단됨
- 'self' 뒤에 특정 도메인 주소를 추가 → 그 도메인에서 제공하는 CSS 파일은 허용됨
| [보충 설명] Directive, 지시자는 어떤 종류의 리소스를 어디에서 가져올 수 있는지를 브라우저이게 지시하는 규칙입니다. CSP Directive인 default-src, sciprt-src, style-src 모두 'self' 를 통해 현재 웹사이트에서 제공하는 리소스만을 허용하도록 합니다. 그리고 'self' 뒤에 도메인 주소를 추가하면, 그 도메인 주소의 리소스들도 허용됩니다. default-src 'self' http://anbymata.com; 이면, 현재 웹사이트와 "http://anbymata.com" 의 리소스들도 허용되는 방식입니다. 각 지시자는 서로 다른 리소스 종류를 담당합니다. default-src = 개별 지시자가 지정되지 않은 모든 리소스 script-src = JavaScript 같은 스크립트만 style-src = CSS 스타일 시트만 담당합니다. 즉, script-src나 style-src가 별도로 지정되지 않은 경우, 스크립트와 스타일 시트는 default-src에 정의된 정책을 따릅니다. |
[9-2] Strict-Transport-Security (HSTS)
- HSTS = 웹 브라우저가 해당 사이트에 접속할 때, 항상 HTTPS를 통해 연결하도록 강제하는 보안 정책
- HTTPS는 HTTP보다 보안성이 강함 → HTTPS 사용을 강제 → 전체적인 보안 수준 향상
- HSTS Header 예시

대표적인 HSTS Directive(지시자)
1. max-age
- 해당 설정이 만료되는 시간
- 단위는 초 (second)
- 여기서 설정은 서버가 브라우저로 전송하는 HSTS 정책을 의미
2. includeSubDomains
- 웹 브라우저가 해당 HSTS 정책을 모든 하위 도메인까지 적용하도록 지시
3. preload
- 웹 사이트를 HSTS preload 목록에 등록할 수 있게 해주는 옵션
- preload는 웹 페이지가 로드 되기 전에 특정 리소스를 미리 가져와 브라우저가 더 빠르게 랜더링 할 수 있게 도와줌
[9-3] X-Content-Type-Options
- X-Content-Type-Options = 무조건 Content-Type Header에 저장된 값만을 사용하도록 강제
- 브라우저가 일반적으로 가진 MIME 스니핑 (sniffing) 기능을 비활성화
- MIME sniffing: Content-Type이 없거나 잘못 설정될 시 파일 형식을 자동으로 추측하는 기능
- MIME: 파일아니 데이터의 형식 및 타입을 나타내는 표준 규격
- MIME sniffing으로 인한 자동 추측 과정에서 잘못된 해석이 발생해 취약점이 생길 수 있음
→ X-Content-Type-Options Header 로 MIME 스니핑을 차단
- X-Content-Type-Options 예시

- nosniff : 브라우저가 MIME 타입을 추측하지 못하게 하는 명령어
[9-4] Referrer-Policy
- Referrer-Policy = 사용자가 다른 사이트로 이동할 때, 웹 서버로 referrer 정보를 얼마나 어떤 범위까지 전달할지를 결정함
- referrer 정보는 이전 페이지의 URL을 뜻함 (= 현재 방문한 웹 페이지에 오기 직전 방문한 웹 페이지의 URL 정보)
- 보통 하이퍼링크, redirection(리디렉션), 리소스 요청 시에 전송할 referrer 정보의 포함 여부와 범위를 결정함
- Referrer-Policy 예시

대표적인 Referrer-Policy Directive(지시자)
1. no-referrer
- 현재 웹사이트에 대한 모든 정보가 비활성화
- 즉, 어떤 정보도 이동할 웹 서버에 보내지 않음
2. same-origin
- 이동하려는 웹 서버의 도메인이 같을 경우, referrer 정보 (이전 페이지의 URL)를 전달함
- 외부 사이트로 이동할 경우에는 referrer 정보를 전달하지 않음
- 즉, 현재 웹사이트와 이동하려는 곳이 같을 때만, referrer 정보를 전달
3. strict-origin
- protocol (프로토콜)이 동일하게 유지될때만, referrer 정보 (이전 페이지의 URL)를 전달함
- HTTPS 에서 HTTPS 로 이동한다면, protocol (프로토콜)이 동일하게 유지된 것
4. strict-origin-when-cross-origin
- 같은 사이트 내에서는 전체 URL 정보를 전송함
- 다른 사이트로 이동할 때에는 도메인 정보만을 전송합니다.
[10] Practical Task: Making HTTP Requests
0. 기본 정보

- 서버에 "tryhackme.com" 웹 사이트를 요청하고 있습니다.
- 1) 좌측 상단의 'GET' 부분을 클릭해 원하는 메서드로 변경 (GET, POST DELETE 등..)
- 2) "http://tryhackme.com/" URL 뒤에 이동하고자 하는 페이지 입력
+ "/example" 페이지로 이동한다고 하면, "http://tryhackme.com/example"로 URL 완성
- 3) 톱니바퀴 아이콘을 눌러 원하는 파라미터(parameter) 입력 (필요하다면)
+ 'key : value' 쌍으로 구성됨. [6-1]에서의 "user=anby"를 생각해보면 됨 (user : anby)
- 4) GO 버튼을 눌러 Request 전송
아래 내용을 보기 전, TryHackMe 사이트에서 실습해보세요!
1. '/api/users' 페이지에 GET Request 보내기
- GET = 웹 서버로부터 정보를 가져오는 method(메서드)
- 즉, '/api/users' 페이지에 대한 정보를 가져옴

2. Bob의 country를 UK에서 US로 수정하도록 '/api/user/2' 페이지에 POST Request 보내기
- 먼저 country 패러미터 값을 'US'로 설정

- 'api/user/2' 페이지에 "country:US"을 포함한 POST Request 보내기
- 즉, 'api/user/2' 페이지의 country값을 "US"로 변경함

3. '/api/user/1' 페이지에 DELETE Request 보내기
- DELETE = 웹 서버의 정보나 레코드를 삭제하는 method(메서드)
- 즉, '/api/user/1' 페이지를 삭제함

[11] Conclusion
학습한 내용들
- Web Application의 구성요소
- URL의 구조
- HTTP 메시지인 Request (요청)과 Response (응답)
- 다양한 보안 Header들
한 줄 정리
= Web Application = URL 구조 + HTTP Request/Response + Security Header 로 안전하게 동작합니다.
[TryHackMe] Web Application Basics - EP.4 (Task 9~11). END.
[TryHackMe] Web Application Basics. Finish!
'TryHackMe > Web & Networks 기초' 카테고리의 다른 글
| [THM] How Websites Work - EP.2 (Task 4~5). 完 (0) | 2026.02.23 |
|---|---|
| [THM] How Websites Work - EP.1 (Task 1~3) (0) | 2026.02.19 |
| [THM] Web Application Basics - EP.3 (Task 7~8) (0) | 2026.01.22 |
| [THM] Web Application Basics - EP.2 (Task 5~6) (1) | 2026.01.21 |
| [THM] Web Application Basics - EP.1 (Task 1~4) (1) | 2026.01.20 |