From aaf92baa9fe4d19ee5751e06d9d149ea843cb158 Mon Sep 17 00:00:00 2001 From: tolelom <98kimsungmin@naver.com> Date: Fri, 13 Mar 2026 17:48:24 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=9E=85=EB=A0=A5=20=EA=B2=80=EC=A6=9D?= =?UTF-8?q?=C2=B7=EB=B3=B4=EC=95=88=20=ED=97=A4=EB=8D=94=C2=B7=EC=A0=91?= =?UTF-8?q?=EA=B7=BC=EC=84=B1=C2=B7UX=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 로그인/회원가입 입력 길이 제한 (username 50자, password 100자) - 공지사항 관리 입력 길이 제한 (제목 200자, 내용 10000자) - AnnouncementBoard aria-expanded 접근성 속성 추가 - DownloadSection useEffect 중복 API 호출 제거 - nginx 보안 헤더 (X-Content-Type-Options, X-Frame-Options) - nginx /assets/ 장기 캐싱 (immutable, 1년) Co-Authored-By: Claude Opus 4.6 --- nginx.conf | 9 +++++++++ src/components/AnnouncementBoard.jsx | 1 + src/components/DownloadSection.jsx | 6 +----- src/components/admin/AnnouncementAdmin.jsx | 2 ++ src/pages/LoginPage.jsx | 2 ++ src/pages/RegisterPage.jsx | 3 +++ 6 files changed, 18 insertions(+), 5 deletions(-) diff --git a/nginx.conf b/nginx.conf index 2f7415a..33ea2b4 100644 --- a/nginx.conf +++ b/nginx.conf @@ -3,12 +3,21 @@ server { root /usr/share/nginx/html; index index.html; + # 보안 헤더 + add_header X-Content-Type-Options "nosniff" always; + add_header X-Frame-Options "DENY" always; + # index.html은 캐싱 금지 (배포 후 즉시 반영) location = /index.html { try_files $uri =404; add_header Cache-Control "no-store, no-cache, must-revalidate"; } + # Vite 해시 에셋 장기 캐싱 + location /assets/ { + add_header Cache-Control "public, max-age=31536000, immutable"; + } + # SPA fallback (react-router 사용 시 필요) location / { try_files $uri $uri/ /index.html; diff --git a/src/components/AnnouncementBoard.jsx b/src/components/AnnouncementBoard.jsx index 214a75a..0e2039c 100644 --- a/src/components/AnnouncementBoard.jsx +++ b/src/components/AnnouncementBoard.jsx @@ -29,6 +29,7 @@ export default function AnnouncementBoard() {