# Aktifkan Rewrite Engine
RewriteEngine On

# --- Lapisan 1: Mencegah Akses Langsung Menggunakan RewriteRule ---
# Ini adalah cara paling efektif untuk memblokir permintaan dari browser atau bot yang mencoba mengakses file view_*.php secara langsung.
# F = Forbidden (Kode 403), L = Last Rule (Berhenti memproses aturan lain).
RewriteRule ^view_.*\.php$ - [F,L]

# --- Lapisan 2: Menggunakan FilesMatch untuk Deny Semua Akses ---
# Ini adalah lapisan ekstra yang memastikan file-file tersebut tidak bisa diakses, bahkan jika ada cara lain yang bypass RewriteRule di atas.
<FilesMatch "^view_.*\.php$">
    Require all denied
</FilesMatch>

# --- Lapisan 3: Membatasi Metode HTTP yang Diizinkan (Opsional tapi direkomendasikan) ---
# Karena file view hanya untuk ditampilkan, tidak perlu menerima POST, PUT, atau metode lainnya.
# Aturan ini akan melarang semua metode HTTP kecuali GET.
<FilesMatch "^view_.*\.php$">
    <LimitExcept GET>
        Require all denied
    </LimitExcept>
</FilesMatch>

# --- Lapisan 4 sampai 10: Headers Keamanan Umum ---
# Aturan-aturan ini meningkatkan keamanan secara keseluruhan untuk seluruh situs web Anda, bukan hanya file view.
# Ini adalah praktik terbaik yang sangat disarankan.

# Lapisan 4: Mencegah Clickjacking
# Melarang situs lain untuk menempatkan halaman Anda di dalam iframe, yang mencegah serangan clickjacking.
Header always append X-Frame-Options DENY

# Lapisan 5: Mencegah Serangan XSS (Cross-Site Scripting)
# Menginstruksikan browser untuk mengaktifkan filter XSS bawaan.
Header set X-XSS-Protection "1; mode=block"

# Lapisan 6: Mencegah MIME Sniffing
# Mencegah browser menebak tipe konten file, yang bisa menjadi celah keamanan.
Header set X-Content-Type-Options nosniff

# Lapisan 7: Menerapkan Content Security Policy (CSP)
# Mengontrol sumber daya (script, style, gambar) yang boleh dimuat, mengurangi risiko serangan injeksi.
Header set Content-Security-Policy "default-src 'self'"

# Lapisan 8: Menggunakan HSTS (HTTPS Strict Transport Security)
# Menginstruksikan browser untuk selalu menggunakan HTTPS, bahkan jika pengguna mengetik HTTP.
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"