From d81be3a170433cd2f0d1b62cec926ba748edb300 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Thu, 16 Jul 2026 04:04:11 +0000 Subject: [PATCH 1/2] Add robots meta tag to prevent search engine indexing of directory structures --- .jules/sentinel.md | 4 ++++ src/main/kotlin/html4tree/main.kt | 2 ++ src/test/kotlin/html4tree/MainTest.kt | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/.jules/sentinel.md b/.jules/sentinel.md index 6ecf72f..072ea63 100644 --- a/.jules/sentinel.md +++ b/.jules/sentinel.md @@ -83,3 +83,7 @@ **Vulnerability:** 정적 HTML 생성 도구에서 매번 다른 Nonce를 동적으로 생성하여 CSP에 적용하는 것은, 캐싱 효율을 저하시킬 뿐만 아니라 정적 배포 환경(예: GitHub Pages 등)에서 올바른 보안 정책 수립을 방해할 수 있는 안티 패턴입니다. **Learning:** 정적으로 고정된 인라인 스타일이나 스크립트에는 난수화된 Nonce보다 콘텐츠 자체의 해시(SHA-256 등)를 사용하는 것이 안전하고 일관된 방식임을 배웠습니다. **Prevention:** 자동 생성되는 정적 HTML의 콘텐츠 보안 정책(CSP)에는 `style-src 'sha256-'` 방식을 적용하고, ` + + ${curr_dir.getName().escapeHtml()} ${css} diff --git a/src/test/kotlin/html4tree/MainTest.kt b/src/test/kotlin/html4tree/MainTest.kt index 1349471..8747205 100644 --- a/src/test/kotlin/html4tree/MainTest.kt +++ b/src/test/kotlin/html4tree/MainTest.kt @@ -520,6 +520,15 @@ class MainTest { process_dir(tempDir) } + @Test + fun testIndexHtmlIncludesRobotsNoIndex() { + go(tempDir.absolutePath, 0) + val indexFile = File(tempDir, "index.html") + assertTrue(indexFile.exists(), "index.html should be generated") + val content = indexFile.readText() + assertTrue(content.contains(""""""), "Generated HTML should include robots meta tag to prevent indexing") + } + @Test(expected = IllegalArgumentException::class) fun testGoBlankDir() { go(" ", -1) From 377491894cdb255e37b2d26008aa51b222fee06a Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Thu, 16 Jul 2026 04:20:13 +0000 Subject: [PATCH 2/2] Add robots meta tag to prevent search engine indexing of directory structures