Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP dan MySQL - bagaimana cara menghindari kata sandi dalam kode sumber?

Cara termudah adalah, seperti yang Anda katakan, menggunakan file konfigurasi.

Banyak kerangka kerja menggunakan ini (Zend , CakePHP , Kohana , dll) dan ini adalah cara paling umum untuk melakukan sesuatu (bahkan di lingkungan non-PHP seperti ASP.NET dengan web.config-nya file). Hal ini memungkinkan Anda juga untuk menyalin nilai konfigurasi dari lingkungan ke lingkungan hanya dengan menyalin file untuk situs, yang merupakan keuntungan dari mengandalkan variabel lingkungan penyiapan server (yang dapat dengan cepat hilang dan terlupakan).

Anda tidak perlu khawatir tentang kebingungan kata sandi karena ini bukan file yang dapat diakses dunia, itu tentu saja tidak boleh diakses web. Yang saya maksud dengan ini adalah Anda akan a) Memberi tahu server web Anda untuk tidak menyajikan file konfigurasi Anda ( IIS sudah melakukan ini dengan web.config file dan menyajikan status HTTP 404.8 alih-alih konten) atau b) Pindahkan ke luar direktori yang dilayani web Anda. Jika seseorang dapat melihat file konfigurasi Anda, itu lebih buruk daripada memilikinya di kode sumber Anda.

Sebaiknya Anda juga memiliki versi dasar (kosong / default) dari file konfigurasi, dan memisahkannya per lingkungan, sehingga Anda dapat memiliki file konfigurasi yang berbeda untuk platform produksi, pengembangan, dan pengujian.

Variabel lingkungan adalah cara paling umum untuk membedakan antara lingkungan ini, seperti kode di bawah ini:

// Check if it's been set by the web server
if (!empty($_ENV['ENVIRONMENT'])) {
    // Copy from web server to PHP constant
    define('ENVIRONMENT', $_ENV['ENVIRONMENT']);
}

if (!defined('ENVIRONMENT')) {
    // Default to development
    define('ENVIRONMENT', 'development');
}

// Load in default configuration values
require_once 'config.default.php';

// Load in the overridden configuration file for this environment
require_once 'config.' . ENVIRONMENT . '.php';

Cara lain yang cukup umum adalah dengan menggunakan file konfigurasi XML dan hanya membaca nilai yang Anda perlukan (menyimpan salinan cache dari file konfigurasi di memori). Ini dapat dengan mudah dibatasi untuk hanya memuat dalam nilai-nilai tertentu, daripada mengizinkan penyertaan file PHP secara sewenang-wenang dan secara keseluruhan merupakan solusi yang lebih baik menurut saya, tetapi hal di atas akan membantu Anda memulai ke arah yang benar.

Anda mungkin ingin VCS Anda untuk mengabaikan file. Di sisi lain, Anda mungkin ingin kerangka file, atau satu dengan default yang wajar (tentu saja yang terakhir tidak berlaku untuk data login), untuk dikontrol versi. Cara umum untuk mengatasinya adalah dengan memiliki file konfigurasi template check-in, dan prosedur penginstalan menyalin file tersebut ke lokasi file konfigurasi sebenarnya, tempat file tersebut dikustomisasi. Ini bisa berupa proses manual, atau otomatis.

(Meskipun agak tidak terkait dengan pertanyaan utama, memperkenalkan konstanta untuk lingkungan Anda memungkinkan Anda melakukan beberapa hal keren lainnya seperti menunda implementasi email palsu alih-alih SMTP satu, tapi tentu saja ini juga bisa dilakukan dengan file konfigurasi)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghitung peringkat di PHP/MySQL

  2. Bagaimana menemukan Indeks yang Hilang di MySQL?

  3. Minggu dalam setahun selama berminggu-minggu dimulai dengan hari Sabtu

  4. C# dan MySQL .NET Connector - Adakah cara untuk mencegah serangan SQL Injection di kelas generik?

  5. Urutan Alfanumerik Oleh di Mysql