Bagaimana cara menyembunyikan file konfigurasi dari akses langsung?
Saya menggunakan Laravel untuk aplikasi web. Mengunggah semua yang ada pada produksi dan menemukan bahwa beberapa file dapat langsung diakses oleh url - misalnya http://example.com/composer.json
Bagaimana cara menghindari akses langsung itu?
Jawaban
Anda menggunakan konfigurasi server web yang salah. Arahkan server web Anda ke publicdirektori dan mulai ulang.
Untuk Apache, Anda dapat menggunakan arahan ini:
DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">
Untuk nginx , Anda harus mengubah baris ini:
root /path_to_laravel_project/public;
Setelah melakukan itu, semua file Laravel tidak akan dapat diakses lagi dari browser.
Itu tidak benar. composer.jsonberada di luar publicdirektori dan karenanya tidak boleh diakses. Ini berarti konfigurasi VirtualHost Anda salah.
Harap pastikan bahwa jalur Anda ke direktori Anda diakhiri dengan /public.
Arahkan server web ke direktori publik di folder akar proyek
project root folder/public
tetapi jika Anda tidak memiliki folder publik dan Anda sudah mengarahkan ke folder root, Anda dapat menolak akses dengan menulis kode berikut di .htaccessfile.
<Files ".env">
Order Allow,Deny
Deny from all
Allow from 127.0.0.1
</Files>
pada kode di atas, pertama kita menyangkal dari semua dan hanya mengizinkan dari server sendiri (localhost ke server) untuk dieksekusi, dan karenanya kita dapat melindunginya dari pengguna luar.
Arahkan server web Anda ke direktori publik dan mulai ulang.
Untuk Apache, Anda dapat menggunakan arahan ini:
DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">
Anda Juga Dapat Menolak file dalam .htaccess juga.
<Files "composer.json">
Order Allow,Deny
Deny from all
</Files>
untuk beberapa file Anda dapat menambahkan tag file di atas beberapa kali dalam file .htaccess.
Tetapkan root dokumen Anda sebagai publicdirektori, sehingga file lain tidak dapat diakses secara langsung. Cari di apache / nginx / ??? file konfigurasi.
Itu tergantung pada server web yang Anda jalankan. Dengan Apache itu akan menjadi file .htaccess sedangkan dengan Nginx itu akan ditangani di file konfigurasi server.
Anda juga dapat menolak file dalam .htaccess.
<Files "composer.json">
Order Allow,Deny
Deny from all
</Files>
Dengan Apache, Anda dapat membuat file .htaccess di direktori root proyek Laravel untuk menulis ulang semua permintaan ke direktori / publik.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>