Saya bekerja dengan administrasi sistem di sebuah universitas dan hanya menemukan sesuatu yang mungkin biasa, tetapi cukup mengejutkan bagi saya.
Semua direktori public_html dan area web disimpan di afs, dengan izin baca untuk server web. Karena pengguna diizinkan memiliki skrip php di public_html mereka, ini berarti mereka dapat mengakses file satu sama lain dari dalam php (dan file web utama!).
Ini tidak hanya membuat perlindungan kata sandi .htaccess sama sekali tidak berguna, itu juga memungkinkan pengguna untuk membaca file sumber php yang berisi kata sandi database mysql dan informasi sensitif serupa. Atau jika mereka menemukan bahwa orang lain memiliki direktori di mana server web memiliki akses tulis (misalnya untuk log pribadi atau untuk menyimpan data formulir yang dikirimkan), mereka dapat menyimpan file di akun tersebut.
Contoh sederhana:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
Apakah ini masalah umum? Dan bagaimana Anda biasanya menyelesaikannya?
MEMPERBARUI:
Terima kasih atas masukannya. Sayangnya, sepertinya tidak ada jawaban sederhana. Dalam lingkungan bersama yang besar seperti ini, pengguna mungkin tidak boleh diberikan pilihan sebanyak ini. Pendekatan terbaik yang dapat saya pikirkan adalah dengan menetapkan "open_basedir" dalam konfigurasi utama untuk semua direktori "public_html", jalankan suphp dan hanya izinkan php bersih (tanpa skrip cgi, menjalankan perintah eksternal dengan backticks dll).
Mengubah kebijakan seperti ini akan menghancurkan banyak hal, dan sangat mungkin membuat pengguna mengambil garpu rumput mereka dan mengejar kami ... Saya akan membahasnya dengan rekan-rekan saya dan memperbarui di sini jika kami membuat keputusan tentang bagaimana mengubah pengaturan.
open_basedir
solusi di bawah ini pada sistem shared hosting produksi, tapi kami membagi semua orang menjadi vhost mereka sendiri - Tidak yakin apakah itu berfungsi untuk direktori tunggal ...