# =============================================================================
# .htaccess - 누수감지 시스템 보안 설정
# 배포 경로: pores.kr/raspi_leck_detecter/
# =============================================================================

# ─── HTTPS 강제 리다이렉트 ─────────────────────────────────
# cafe24 호스팅 관리자 패널에서 SSL 리다이렉트 설정 사용
# (.htaccess 리다이렉트는 리버스 프록시 환경에서 무한 루프 유발)

<IfModule mod_rewrite.c>
    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]
</IfModule>

# ─── 민감 PHP 파일 직접 접근 차단 ─────────────────────────
<FilesMatch "^(config|config\.local|config\.local\.example|sms_send|incidents|ops_checks|setup_hash|test_mobile)\.php$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
    </IfModule>
</FilesMatch>

# ─── 보안 헤더 ───────────────────────────────────────────
<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "DENY"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    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 unset X-Powered-By
</IfModule>

# ─── 디렉토리 목록 비활성화 ──────────────────────────────
<IfModule mod_autoindex.c>
    Options -Indexes
</IfModule>
