Anda cukup mengelola fungsi allow_url_fopen dan allow_url_include dengan mengedit php. ini di server Anda. Anda dapat mengaktifkannya jika fungsi ini dinonaktifkan di file konfigurasi php
Fungsi ini mungkin dinonaktifkan di file konfigurasi php di beberapa server hosting bersama. Anda cukup mengelola fungsi ini dengan membuat php khusus. file ini di bawah folder publik Anda
Di Server Khusus
Buka file /etc/php.ini. ini dan tambahkan atau ubah di bawah dua baris
#vim /etc/php.ini allow_url_fopen = On ...... allow_url_include = OnMulai ulang server web
# service httpd restart _Di Server Hosting Bersama
Buat atau buka php. ini di bawah direktori publik domain Anda dan tambahkan dua baris berikut untuk mengaktifkan fungsi ini
izinkan_url_fopen
Untuk tujuan keamanan, fungsi ini dinonaktifkan secara default karena fungsi ini memungkinkan Anda untuk mengakses file jarak jauh yang dibuka. Jika Anda ingin mengaktifkan fungsi ini, Anda perlu memodifikasi di php kustom. file ini. Fungsi ini dinonaktifkan di beberapa server shared hosting di file konfigurasi PHP untuk keamanan. Dengan bantuan membuat php kustom. File ini di bawah folder publik Anda dapat mengatur kedua fungsi
izinkan_url_sertakan
Fungsi ini juga dinonaktifkan demi keamanan. Fungsi ini memungkinkan Anda untuk mengakses file jarak jauh dengan memerlukan atau menyertakan pernyataan. Membutuhkan atau menyertakan pernyataan adalah poin utama serangan untuk perintah kode. Fungsi ini dinonaktifkan di beberapa server shared hosting di file konfigurasi PHP untuk keamanan
Langkah-langkah untuk mengaktifkan fungsi allow_url _fopen dan allow_url_include
Jika Anda ingin mengaktifkan fungsi allow_url_include dan allow_url_fopen, ubah file konfigurasi php. Untuk mengaktifkan fungsi ini ikuti langkah-langkah di bawah ini
Langkah 1. pertama anda harus membuka atau membuat php. file ini di bawah folder publik.
Langkah 2. kemudian menambahkan dua baris di php. file ini untuk mengaktifkan fungsi.
izinkan_url_fopen = aktif
allow_url_include = aktif
Langkah-langkah untuk menonaktifkan fungsi allow_url_fopen dan allow_url_include
Kami menyarankan Anda untuk menonaktifkan fungsi ini jika Anda ingin mengamankan server. Untuk menonaktifkan fungsi ini, Anda hanya perlu memodifikasi file konfigurasi php
Langkah 1. Anda harus membuka atau membuat php. file ini di bawah folder publik.
Langkah 2. lalu nonaktifkan kedua fungsi hanya dengan menambahkan dua baris dalam file.
izinkan_url_fopen = mati
allow_url_include = nonaktif
Tindakan yang Harus Dilakukan
Untuk menonaktifkan allow_url_include, harap tambahkan atau modifikasi php. opsi konfigurasi ini seperti yang terlihat di bawah ini. Opsi konfigurasi ini tersedia sejak PHP 5. 2. 0 dan ditandai sebagai tidak digunakan lagi pada PHP 7. 4. 0
Saat allow_url_include diperkenalkan, itu adalah perlindungan yang cukup baik terhadap "penyertaan skrip jarak jauh". Namun, itu menyebabkan masalah untuk perlindungan "penyertaan skrip lokal". RFC ini mengatasi masalah dan membuat perlindungan "penyertaan skrip lokal" lebih efektif
allow_url_include adalah INI_SYSTEM, oleh karena itu sertakan/wajibkan abaikan saja pengaturan untuk pembungkus aliran tertentu selalu. allow_url_include sebenarnya tidak melarang penyertaan formulir URL. Ini memungkinkan “phar. //” terlepas dari pengaturan allow_url_include dan membantu penyerang menyamarkan skrip serangan. e. g. termasuk(“phar. //evil_phar_file/evil_script. php") diizinkan kapan saja. Perilaku saat ini memungkinkan untuk mem-bypass jenis filter keamanan tertentu dan memungkinkan skrip penyerang dieksekusi
Perilaku allow_url_include saat ini salah karena 3 alasan
Penyisihan implisit dari nama file yang dibentuk URL bermasalah. Adalah tanggung jawab "penelepon" untuk menyetel pengaturan ini sebagaimana dimaksud. (Atau "callee" harus memiliki API untuk menimpanya untuk melakukan pekerjaan itu)
Itu tidak membuat "sertakan/wajibkan" berperilaku seperti yang tersirat dari nama pengaturan INI
Menjadi INI_SYSTEM meningkatkan risiko bypass filter keamanan
allow_url_include menjadi INI_SYSTEM adalah rasa aman yang salah. Itu juga melanggar prinsip API sederhana itu
“penelepon” harus memiliki tanggung jawab untuk menyetel kondisi yang benar
atau
"callee" harus memiliki API/parameter untuk menyetel kondisi yang benar untuk API
Allow_url_include saat ini dan API terkait tidak memenuhi keduanya
Kami membutuhkan URL yang lebih tepat termasuk kontrol
Usul
Hapus pengaturan allow_url_include INI dan perkenalkan URL yang lebih tepat termasuk kontrol
Pilihan 1
Perkenalkan parameter ke-2 yang menentukan awalan URL (pembungkus)
Pro
Membutuhkan lebih sedikit modifikasi kode = lebih sedikit BC
Perbandingan string sederhana sudah cukup
Lebih spesifik pembungkus mana yang digunakan. (Hanya pembungkus yang ditentukan yang dapat digunakan)
Lebih fleksibel saat pembungkus baru ditambahkan. (Tidak diperlukan kode tambahan untuk ini)
Kontra
'far. //' terlihat berlebihan
Parameter ke-2 hanya digunakan untuk menentukan pembungkus. saya. e. Tidak dapat menggunakannya tanpa bendera mode tersemat, dll. Mungkin ada pembungkus semu seperti "noembed. //"
Pilihan 2
Perkenalkan flag “inlcude_type” untuk menyertakan*/require*() sebagai parameter ke-2
di mana $include_type (bitwise) berada
PHP_STREAM_LOCAL = 1 - izinkan pembungkus lokal. phar. //, zip. //, dll
PHP_STREAM_REMOTE = 2 - izinkan pembungkus jarak jauh. http. //, https. //, ftp. //, dll
PHP_STREAM_ALL = 3 (PHP_STREAM_LOCAL. PHP_STREAM_REMOTE)
Tambahkan metode getType() ke kelas stream wrapper mengembalikan PHP_STREAM_LOCAL, PHP_STREAM_REMOTE atau PHP_STREAM_ALL
Pro
API terlihat lebih sistematis/bersih
Kontra
Lebih kompleks dan membutuhkan banyak modifikasi daripada opsi #1 (More BC)
Perubahan Tidak Kompatibel Mundur
Beberapa termasuk/mengharuskan yang menggunakan URL implisit termasuk perlu parameter ke-2
Pilihan 2. Jika kelas stream wrapper tidak memiliki metode getType(), maka akan diperlakukan sebagai PHP_STREAM_REMOTE
Versi PHP yang Diusulkan
Dampak RFC
Untuk SAPI
CLI - memuat phar sebagai skrip utama diizinkan secara default
php. // masukan dan php. // penanganan stdin
php. // masukan dan php. //stdin harus ditangani secara berbeda. Ini adalah input "jarak jauh" di bawah Web SAPI sementara ini adalah input "lokal" di bawah CLI. Oleh karena itu, pembungkus “php” ini ditangani sesuai dengan tipe SAPI
Untuk Ekstensi yang Ada
Modul memiliki pembungkus aliran
Pembungkus ditentukan oleh distribusi sumber PHP. (Mungkin ada yang lain)
$ php -r "var_dump(stream_get_wrappers());" array(12) { [0]=> string(5) "https" [1]=> string(4) "ftps" [2]=> string(13) "compress.zlib" [3]=> string(3) "php" [4]=> string(4) "file" [5]=> string(4) "glob" [6]=> string(4) "data" [7]=> string(4) "http" [8]=> string(3) "ftp" [9]=> string(14) "compress.bzip2" [10]=> string(4) "phar" [11]=> string(3) "zip" }_Ke Opcache
Konstanta Baru
Akan ada konstanta untuk pembungkus aliran. TBD
php. ini Default
allow_url_include ini dihapus
Masalah Terbuka
Fungsionalitas PHP tidak terpengaruh
Lingkup Masa Depan
allow_url_fopen memiliki masalah yang sama. Namun, allow_url_fopen memiliki lebih sedikit masalah karena tidak mem-parsing dan menjalankan skrip