Setiap aplikasi web menengah hingga besar harus berurusan dengan informasi sensitif. Contoh jenis informasi ini adalah kredensial untuk mengakses database dan kunci API pihak ketiga Show
Jika data ini tidak dienkripsi saat istirahat, penyerang mungkin mendapatkan akses ke sana dan menggunakannya untuk tujuan jahat Ketika Anda pertama kali memulai, sangat umum untuk menemukan informasi ini disimpan langsung ke dalam kode di mana nilainya digunakan (a. k. a. hardcoded) dan sementara ini berhasil, dengan cepat menjadi jelas bahwa itu bukan praktik yang baik untuk jangka panjang karena membuat perubahan kecil berarti melalui ratusan atau bahkan ribuan baris kode Langkah evolusi berikutnya adalah mengambil nilai-nilai ini dan secara dinamis menghasilkan file konfigurasi selama penerapan (mis. g. Tindakan GitHub)
Atau beberapa format lain yang lebih rumit seperti YAML, XML, atau INI Keuntungan menggunakan file eksternal adalah kenyataan bahwa ketika perubahan diperlukan ada file terkenal (dan tunggal. ) lokasi untuk membuat perubahan tersebut dan semuanya tetap berfungsi seperti yang diharapkan Tapi masalahnya adalah di mana menyimpan rahasia ini? Konfigurasi Aplikasi PHP Menggunakan Variabel LingkunganSalah satu cara yang sangat baik untuk mengatasi masalah ini adalah mengonfigurasi aplikasi menggunakan variabel lingkungan saat itu, tidak ada nilai konfigurasi aplikasi yang ada di basis kode Satu catatan penting. mekanisme ini sama sekali tidak eksklusif untuk PHP dan sama bergunanya jika Anda bekerja dengan Nodejs, Python, atau hampir semua bahasa pemrograman lainnya Jika Anda menggunakan variabel lingkungan dalam aplikasi PHP CLI, Anda dapat memanggilnya menggunakan perintah seperti _Dan nilai ini akan tersedia untuk skrip Anda melalui fungsi fungsi getenv, seperti ini
Ada cara lain untuk melakukannya, menggunakan superglobal 3, seperti ini _Saya sarankan hanya menggunakan _4 karena untuk menggunakan 3 superglobal, file 6 Anda memerlukan nilai untuk memulai dengan huruf "E" yang mungkin tidak selalu demikianMengatur variabel lingkungan untuk aplikasi CLI itu sederhana, tetapi bagaimana dengan lingkungan web di mana proses PHP dihasilkan oleh server aplikasi seperti NGINX atau Apache? Server aplikasi (untuk alasan keamanan yang baik) tidak memaparkan variabel lingkungan tingkat sistem ke proses PHP, jadi Anda memerlukan pendekatan yang berbeda Mari kita lihat bagaimana Anda dapat menyetel variabel lingkungan untuk server web paling populer. Apache dan NGINX dan kami akan menggunakan Docker sehingga Anda dapat dengan mudah mengikuti contoh berikut Cara Mengatur Variabel Lingkungan untuk Aplikasi PHP di Apache Apache menggunakan modul mod_env untuk mendefinisikan variabel lingkungan menggunakan direktif SetEnv Cara terbaik untuk melakukan ini untuk PHP di Apache adalah dengan membuat file konfigurasi Apache terpisah untuk menentukan nilainya Menggunakan Debian dan Ubuntu sebagai contoh, file konfigurasi yang berisi variabel lingkungan harus disimpan di direktori /etc/apache2/conf-available Dalam kasus kami, kami akan menyebutnya apache-env-vars. conf, menggunakan direktif SetEnv untuk mendefinisikan setiap variabel lingkungan _Setelah melakukan ini, konfigurasi harus diaktifkan agar Apache dapat memuatnya saat memulai, tetapi cara ini dilakukan tergantung di mana Anda menjalankan Apache Jika menggunakan Mesin Virtual yang menjalankan Debian atau Ubuntu, Anda harus membuat file conf di 7, lalu jalankan 8 agar dapat dimuat saat startupJika Apache sudah berjalan saat file ini dibuat, maka harus me-restart Apache dengan menjalankan sudo service apache2 restart agar variabel lingkungan di file conf dapat dimuat Menggunakan Docker dan gambar 9 serupa kecuali file conf perlu dibuat di direktori 0, kemudian jalankan a2enconf env-vars sebagai bagian dari perintah start kontainerCara Mengatur Variabel Lingkungan untuk Aplikasi PHP di NGINXKetika datang ke NGINX, strategi serupa harus diterapkan, perbedaan utamanya adalah bahwa NGINX tidak menelurkan proses PHP secara langsung, karena hanya mem-proxy permintaan ke PHP-FPM. Ini berarti variabel lingkungan harus ditentukan dalam file konfigurasi PHP-FPM, biasanya disimpan di 1Menetapkan variabel lingkungan untuk PHP-FPM menggunakan sintaks berikut (jangan mengutip nilai)
Jadi, untuk menyimpan variabel lingkungan Anda di NGINX dan PHP-FPM, sebaiknya buat file baru di 2 dan masukkan definisi di dalamnyaSama seperti dalam kasus Apache, masuk akal untuk membuat file ini saat menjalankan penampung Bagaimana Seharusnya Variabel Lingkungan Diisi?Variabel lingkungan adalah solusi terbaik untuk menyediakan aplikasi PHP Anda dengan rahasia dan data konfigurasi, tetapi di mana harus disimpan? Satu masalah dengan menyimpan nilai variabel lingkungan di server web atau file konfigurasi sistem operasi adalah kenyataan bahwa mereka tinggal di luar proyek Anda, yang meningkatkan kompleksitas penerapan kode Anda di beberapa lokasi Adalah. env File Jawabannya?Sebuah. env adalah file teks biasa yang berisi definisi variabel lingkungan yang dirancang agar aplikasi PHP Anda akan menguraikannya, melewati Apache, NGINX dan PHP-FPM Penggunaan dari. env populer di banyak kerangka kerja PHP seperti Laravel yang memiliki dukungan bawaan untuk parsing. env, atau menggunakan _3libraryMenggunakan. env di PHP itu sederhana, yang diperlukan hanyalah mekanisme untuk membaca file, mengurai isinya, dan mengisi lingkungan, bukan? Sehat. sebenarnya ada beberapa masalah lain yang perlu diperhatikan seperti validasi dan pengecekan keberadaan nilai yang dibutuhkan Seperti biasa, mengapa mengalami semua masalah ini ketika orang lain telah melakukannya untuk Anda, bukan? Untuk menambahkan paket ini ke aplikasi Anda, jalankan composer require vlucas/dotenv kemudian minta file autoload yang terletak di direktori vendor Anda seperti ini
Dan Anda akan siap menggunakan perpustakaan seperti ini
Setelah itu, Anda cukup mengakses nilai yang disimpan di. env menggunakan _4Dimana Harus Isi. env File Disimpan?Jelas, sejak. env menyimpan data yang berpotensi sensitif, file tersebut tidak boleh disimpan di webroot yang dapat diakses publik karena NGINX dan Apache melihatnya sebagai file teks dan tidak tahu bahwa file tersebut harus dilindungi secara default. Dan mereka pasti tidak boleh berkomitmen untuk repositori kode sumber Anda Biasanya, mereka disimpan di direktori root aplikasi Anda Cara Menggunakan. env File untuk Aplikasi LaravelLaravel menggunakan. env sebagai bagian dari konfigurasinya dan secara otomatis digabungkan dalam paket vlucas/dotenv. Faktanya, saat Anda membuat proyek baru sebagai sampel. env dibuat untuk Anda Satu perbedaan yang dapat Anda temukan saat bekerja dengannya. env dalam proyek Laravel sebagai lawan dari yang non-Laravel adalah adanya pembantu yang disebut env yang dapat digunakan untuk mengakses nilai variabel lingkungan, seperti ini
Meskipun ada kemungkinan menggunakan parameter kedua untuk memberikan nilai default, ini tidak disarankan. Mengapa? . Oleh karena itu jauh lebih baik untuk mendefinisikan segala sesuatu di. env jadi hanya ada satu tempat untuk melihat bagaimana aplikasi dikonfigurasi Bagaimana menyediakan rahasia sebagai variabel lingkungan ke aplikasi PHP melalui. env menggunakan DockerNilai yang tersimpan di dalamnya. env dapat diteruskan ke aplikasi PHP di Docker dengan beberapa cara Meneruskan Variabel Lingkungan saat Menjalankan ContainerSalah satu opsi adalah mengisi variabel lingkungan untuk penampung menggunakan opsi 5
Keterbatasan pendekatan ini adalah hanya berguna untuk aplikasi PHP CLI, karena variabel lingkungan yang ditentukan wadah (sistem) tidak akan diteruskan oleh server web karena alasan keamanan. Meneruskan Variabel Lingkungan menggunakan Volume MountCara yang lebih umum untuk menggunakan an. env adalah untuk memasangnya ke wadah buruh pelabuhan _0Dari sana, aplikasi Anda dapat mengakses. env disimpan di /usr/src/app/. env di dalam wadah hanya dengan melakukan hal berikut _1Tapi sebelum memutuskan itu. env adalah caranya, penting untuk memahami risiko dan kelemahan penggunaan. env untuk konfigurasi dan rahasia aplikasi Mengapa. env File Bukan Solusi TerbaikKetika. env tentu saja lebih baik daripada rahasia hard-coding dalam kode sumber, mereka menciptakan serangkaian masalah baru
Jadi. bagaimana seharusnya Anda menangani rahasia aplikasi Anda? Menggunakan Secrets Manager untuk Aplikasi PHP Untuk menghindari masalah ini dan lainnya, menggunakan pengelola variabel lingkungan seperti Doppler dapat membuat hidup lebih mudah Semua variabel lingkungan untuk aplikasi Anda dapat dikelola dengan mudah melalui dasbor Doppler dan rahasia dapat diambil menggunakan CLI atau API mereka Untuk melihat bagaimana rasanya menggunakan pengelola rahasia dengan PHP, mari kita lihat beberapa contoh menggunakan Doppler untuk mengisi rahasia ke aplikasi PHP menggunakan variabel lingkungan Cara Memasok Rahasia sebagai Variabel Lingkungan ke Aplikasi PHP di Docker menggunakan DopplerGagasan umum dari contoh berikut adalah menggunakan Doppler sebagai satu-satunya sumber kebenaran dalam hal pengelolaan rahasia dan menggunakan Doppler CLI untuk mengunduh rahasia dan membuatnya tersedia untuk aplikasi Docker PHP Anda Pada dasarnya ada dua keputusan yang harus dibuat di sini
Di bagian berikut, saya akan menjelajahi opsi yang berbeda sehingga Anda dapat memilih salah satu yang paling masuk akal bagi Anda Doppler CLI Menghasilkan File Apache ConfJika Anda memilih untuk mempertahankan gambar Docker apa adanya, Anda dapat menjalankan Doppler CLI di lingkungan hosting penyebaran atau wadah untuk menghasilkan file conf dan memasang di dalam wadah Perintah persis yang Anda perlukan untuk memulai penampung bergantung pada apakah Anda memilih konfigurasi atau. file env Kami akan menggunakan file conf Apache sebagai contoh di sini, tetapi prosesnya pada dasarnya sama, hanya berbeda secara sintaksis untuk PHP-FPM atau. env Mount File Conf Apache EksternalUntuk mengunduh versi terbaru rahasia Anda ke file konfigurasi Apache, Anda harus menggunakan Doppler CLI untuk membuat file conf Apache sebelum menjalankan penampung Anda _2Pasang env-vars. conf di dalam wadah _3Apache kemudian akan secara otomatis membaca conf saat memulai Jika Anda lebih suka menggunakan. env, perintah untuk mengunduh rahasia sedikit berbeda _4Kemudian Anda dapat memulai wadah Anda seperti ini _5Contoh ini memungkinkan Anda untuk menggunakan Doppler tanpa mengubah gambar yang sudah ada seperti 6. Sekarang mari kita lihat pendekatan yang direkomendasikan yang menggunakan gambar Docker khusus dengan Doppler CLI yang disematkanFile Apache Conf Dihasilkan Di Dalam KontainerCara lain untuk melakukannya adalah dengan memiliki Doppler CLI di dalam wadah dan membuatnya menghasilkan file conf Apache pada waktu wadah dijalankan. Manfaat dari pendekatan ini adalah yang harus Anda lakukan untuk mendapatkan versi terbaru dari rahasia Anda hanyalah memulai ulang wadah. Tidak diperlukan penerapan ulang, dan tidak ada file untuk dipasang Menggunakan Apache sebagai contoh, kita perlu memperluas image Docker 9 untuk menyematkan Doppler CLI dan mengubah skrip entrypoint sehingga menghasilkan file conf Apache sebelum memulai ApacheIni adalah contoh Dockerfile lengkap _6Kode untuk custom docker-php-entrypoint akan menjadi seperti berikut _7Pastikan untuk memberikan izin yang dapat dieksekusi titik masuk _8Sekarang mari kita buat image Docker _9Buka dasbor Doppler untuk proyek Anda, hasilkan Token Layanan, lalu ekspor di terminal Anda 0Dan terakhir, jalankan wadahnya 1Manajemen Rahasia untuk Contoh Kode Aplikasi PHPArtikel ini sudah sangat panjang, tetapi saya mendorong Anda untuk memeriksa repositori sampel ini dari Doppler yang memiliki contoh konsep kerja tambahan yang telah saya tunjukkan dalam artikel ini Berjalan di Laravel Forge?Jika Anda mengelola penerapan dengan Laravel Forge, mengintegrasikan Doppler semudah beberapa klik agar rahasia Anda tersedia secara otomatis untuk aplikasi Anda dan diperbarui setiap saat Ikuti saja petunjuknya di sini Menggunakan API DopplerFitur bagus lainnya dari Doppler adalah API yang memungkinkan Anda membuat klien khusus, mungkin berinteraksi dengannya dari dalam aplikasi Anda Yang harus Anda lakukan adalah mengeluarkan permintaan REST ke server Doppler, berikan token akses Anda dan Anda siap melakukannya Berikut ini contoh menggunakan cURL 2Tentu saja, Anda dapat menggunakan klien HTTP pilihan Anda, tetapi perlu diingat bahwa menekan API pada setiap permintaan akan sangat buruk bagi kinerja aplikasi Anda sehingga Anda mungkin ingin menyimpan output dari API Doppler ke konfigurasi lokal. Jika Anda ingin tahu lebih banyak tentang API Doppler, lihat ini RingkasanPada artikel ini Anda telah mempelajari berbagai cara untuk memberikan rahasia ke aplikasi PHP Anda yang meliputi Apache, NGINX dengan PHP-FPM dan. file env. \ Jika Anda ingin mencoba Doppler, Anda dapat mendaftar untuk paket komunitas gratis Bagaimana cara memanggil variabel lingkungan di PHP?Anda dapat mengakses variabel ini menggunakan larik $_SERVER dan $_ENV . $site_path_var = $_SERVER["SITE_HTMLROOT"]; .
Bagaimana cara mendapatkan variabel lingkungan?Di bilah tugas Windows, klik kanan ikon Windows dan pilih Sistem. Di jendela Pengaturan, di bawah Pengaturan Terkait, klik Pengaturan sistem lanjutan. Pada tab Tingkat Lanjut, klik Variabel Lingkungan. Klik Baru untuk membuat variabel lingkungan baru
Bagaimana cara mendapatkan data dari file env di PHP?File lingkungan aplikasi PHP menampung sebagian besar setelan email, konfigurasi host SMTP. . LANGKAH 1 Konfigurasikan untuk menetapkan nilai khusus di PHP. env LANGKAH 2 Di Aplikasi. file php dibaca menggunakan metode env(''). LANGKAH 3 Gunakan config('') untuk mengambil dari aplikasi. file php Di mana variabel lingkungan PHP disimpan?Ini berarti variabel lingkungan harus ditentukan dalam file konfigurasi PHP-FPM, biasanya disimpan di /usr/local/etc/php-fpm. d/ . Jadi, untuk menyimpan variabel lingkungan Anda di NGINX dan PHP-FPM, ada baiknya membuat file baru di /usr/local/etc/php-fpm. d/env-vars. |