Dalam PHP, biasanya informasi sensitif seperti file disimpan dalam sebuah direktori yang tidak langsung dapat diakses dari web, seperti di artikel saya sebelumnya. Ini membantu mencegah akses yang tidak sah ke file sensitif. Untuk memblokir akses langsung ke file tersebut, Anda dapat menggunakan beberapa teknik yang berbeda.
- Cek Referrer
Salah satu metode yang paling sederhana adalah memeriksa referrer, yaitu URL dari halaman yang mengacu pengguna ke halaman saat ini. Ini dapat dilakukan dengan menggunakan variabel$_SERVER['HTTP_REFERER']
dalam PHP. Contohnya:
if (!isset($_SERVER['HTTP_REFERER'])) { // jika tidak ada referrer, block access header('HTTP/1.0 403 Forbidden'); exit; } Ini memeriksa apakah referrer sudah ditetapkan dan jika tidak, itu mengembalikan kesalahan 403 Forbidden, yang mencegah akses ke file. Namun, metode ini tidak selalu ampuh karena informasi referrer dapat dengan mudah dimanipulasi.
- Gunakan skrip PHP sebagai proxy
Metode lain adalah menggunakan skrip PHP sebagai proxy untuk menyajikan file. Skrip PHP ini dapat memeriksa autentikasi atau otorisasi sebelum menyajikan file. Contohnya
<?php session_start(); if (!isset($_SESSION['user_id'])) { // Not authenticated, so redirect to login page header('Location: login.php'); exit; } $file = 'path/to/sensitive/file.pdf'; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($file).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); readfile($file); exit; } else { // File not found, so block access header('HTTP/1.0 404 Not Found'); exit; } Dalam contoh ini, skrip PHP memeriksa apakah pengguna terotentikasi dengan memeriksa variabel $_SESSION. Jika pengguna belum terotentikasi, mereka akan dialihkan ke halaman login. Jika pengguna sudah terotentikasi, file akan disajikan ke pengguna.
- Gunakan .htaccess
Anda juga dapat menggunakan file .htaccess untuk memblokir akses langsung ke file. Ini dilakukan dengan menambahkan baris berikut ke file .htaccess:
<FilesMatch "\.(inc|txt|doc|pdf)$"> Order Allow,Deny Deny from all </FilesMatch>
Ini akan memblokir akses ke semua file yang memiliki ekstensi .inc, .txt, .doc, atau .pdf. Anda dapat mengubah daftar ekstensi sesuai kebutuhan Anda. Namun, pastikan bahwa file .htaccess berada pada direktori yang sama dengan file yang ingin Anda blokir aksesnya.
Dengan menggunakan salah satu dari metode di atas, Anda dapat memblokir akses langsung ke file melalui URL dalam PHP. Ini membantu melindungi informasi sensitif dan memastikan bahwa file hanya dapat diakses melalui skrip PHP yang tepat.