From de3cc0a3c352a6e24c14c122dc92caa52506e745 Mon Sep 17 00:00:00 2001
From: seonghobae <8172694+seonghobae@users.noreply.github.com>
Date: Sun, 19 Jul 2026 20:58:27 +0000
Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A1=EF=B8=8F=20Sentinel:=20[=EB=B3=B4?=
=?UTF-8?q?=EC=95=88=20=ED=96=A5=EC=83=81]=20=EA=B2=80=EC=83=89=EC=97=94?=
=?UTF-8?q?=EC=A7=84=20=EC=9D=B8=EB=8D=B1=EC=8B=B1=20=EB=B0=A9=EC=A7=80=20?=
=?UTF-8?q?=EB=A9=94=ED=83=80=20=ED=83=9C=EA=B7=B8=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- `main.kt`: 생성된 index.html에 `` 태그를 추가하여 퍼블릭 웹 서버에 배포 시 크롤러를 통한 무분별한 디렉토리 정보 노출을 방지합니다.
- `MainTest.kt`: 해당 메타 태그 존재 여부를 검증하는 테스트 코드를 추가하였습니다.
- `.jules/sentinel.md`: 해당 보안 학습 내용을 기록하였습니다.
---
.jules/sentinel.md | 5 +++++
src/main/kotlin/html4tree/main.kt | 2 ++
src/test/kotlin/html4tree/MainTest.kt | 1 +
3 files changed, 8 insertions(+)
diff --git a/.jules/sentinel.md b/.jules/sentinel.md
index 6ecf72f1..228ff5a9 100644
--- a/.jules/sentinel.md
+++ b/.jules/sentinel.md
@@ -83,3 +83,8 @@
**Vulnerability:** 정적 HTML 생성 도구에서 매번 다른 Nonce를 동적으로 생성하여 CSP에 적용하는 것은, 캐싱 효율을 저하시킬 뿐만 아니라 정적 배포 환경(예: GitHub Pages 등)에서 올바른 보안 정책 수립을 방해할 수 있는 안티 패턴입니다.
**Learning:** 정적으로 고정된 인라인 스타일이나 스크립트에는 난수화된 Nonce보다 콘텐츠 자체의 해시(SHA-256 등)를 사용하는 것이 안전하고 일관된 방식임을 배웠습니다.
**Prevention:** 자동 생성되는 정적 HTML의 콘텐츠 보안 정책(CSP)에는 `style-src 'sha256-'` 방식을 적용하고, `
+
+
${curr_dir.getName().escapeHtml()}
diff --git a/src/test/kotlin/html4tree/MainTest.kt b/src/test/kotlin/html4tree/MainTest.kt
index 13494714..00f03f09 100644
--- a/src/test/kotlin/html4tree/MainTest.kt
+++ b/src/test/kotlin/html4tree/MainTest.kt
@@ -309,6 +309,7 @@ class MainTest {
val htmlContent = indexFile.readText()
assertTrue(htmlContent.contains(""))
assertTrue(htmlContent.contains(""))
+ assertTrue(htmlContent.contains(""))
assertTrue(htmlContent.contains("