# ============================================================================= # .htaccess - 누수감지 시스템 보안 설정 # ============================================================================= # ─── HTTPS 강제 리다이렉트 ───────────────────────────────── # cafe24 호스팅 관리자 패널에서 SSL 리다이렉트 설정 사용 # (.htaccess 리다이렉트는 리버스 프록시 환경에서 무한 루프 유발) RewriteEngine On # var/ 디렉토리 접근 차단 RewriteRule ^var/ - [F,L] # [v2] uploads/ 디렉토리 PHP 실행 차단 RewriteRule ^uploads/.*\.ph(p[3457]?|t|tml)$ - [F,L] # 불필요 HTTP 메소드 차단 RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|PUT|PATCH) [NC] RewriteRule .* - [F,L] # ─── 민감 PHP 파일 직접 접근 차단 ───────────────────────── Require all denied Order deny,allow Deny from all # ─── 보안 헤더 ─────────────────────────────────────────── Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options "DENY" Header always set X-XSS-Protection "1; mode=block" # 내부 관리 시스템 — 검색엔진 색인 금지(HTTP 레벨, 전 응답 공통). # robots.txt 는 쓰지 않는다: 공개 파일이라 난독화 경로를 오히려 광고하게 됨. Header always set X-Robots-Tag "noindex, nofollow, noarchive" # 외부로 Referer 자체를 보내지 않음(도메인 확인 유출 차단). 내부 이동은 영향 없음. Header always set Referrer-Policy "no-referrer" # TODO(follow-up): 'unsafe-inline' 제거 — 대시보드 인라인 스크립트/스타일을 외부 # 파일로 분리한 후 script-src/style-src 에서 'unsafe-inline' 을 삭제해야 한다. Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; frame-ancestors 'none'; form-action 'self'" Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()" Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains" Header always unset X-Powered-By # ─── 디렉토리 목록 비활성화 ────────────────────────────── Options -Indexes