Block direct access file in url PHP

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.

  1. 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.
  1. 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
block direct access in url by warungadi.com
<?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.
  1. 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.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Scroll to Top