Kami akan menempatkan salah satu situs ProcessWire kami ke dalam sistem kontrol sumber berbasis Git. Repositori bersifat pribadi, tetapi saya masih ingin tidak menggunakan kata sandi. Saya telah memikirkan tentang cara menangani kata sandi basis data di /site/config. php (Saya telah membaca dokumentasi tentang mengamankan konfigurasi. file php itu sendiri). Saya telah memikirkan opsi berikut Show
Tak satu pun dari opsi ini yang tampaknya ideal. Apakah ada yang punya saran? Bersulang, Warwick Tautkan ke komentarBerbagi di situs lainLebih banyak opsi berbagi CraigDiposting 16 November 2021 Craig
Diposting 16 November 2021 Inilah yang saya lakukan, yang hampir seperti (2) situs/konfigurasi. php <?php namespace ProcessWire; if(!defined("PROCESSWIRE")) die(); // Other PW default config values... // ... $config->dbHost = 'localhost'; $config->dbName = 'example_site'; $config->dbUser = ''; $config->dbPass = ''; $config->dbPort = '3306'; $config->dbCharset = 'utf8mb4'; $config->dbEngine = 'InnoDB'; // Environment overwrite if (file_exists(__DIR__ . '/config.local.php')) { require_once(__DIR__ . '/config.local.php'); } config. lokal. php <?php namespace ProcessWire; $config->dbUser = 'example_site_user'; $config->dbPass = 'example_user_pass_123456';_
config. lokal. php masuk. gitignore, jadi jangan pernah berkomitmen, dan pisahkan konfigurasi. lokal. file php ada di lingkungan pengujian / langsung. (Saya menggunakan DeployHQ dan ini ditambahkan sebagai file konfigurasi yang diterapkan dengan kode lainnya) Bagi saya, manfaat dari pendekatan ini berarti bahwa seluruh konfigurasi dapat diubah tergantung pada lingkungan, dan digunakan untuk menghidupkan atau mematikan sesuatu, seperti mode debug atau lanjutan
Tautkan ke komentarBerbagi di situs lainLebih banyak opsi berbagi FireWireDiposting 30 November 2021 FireWire
Diposting 30 November 2021 Saya sedikit terlambat untuk permainan ini tetapi ingin membuang apa yang kami gunakan di situs PW kami. Kami menyimpan semua kredensial. env di direktori root dan kemudian dimuat menggunakan paket yang disebut phpdotenv. Itu. env dimuat dan kemudian kredensial dapat diakses saat runtime melalui $_ENV global. Beberapa detail lebih lanjut tentang pengaturan ini
Kami menggunakan Git untuk menerapkan ke server pementasan/produksi jadi gunakan. env memungkinkan kita untuk mendorong semua kode kita sambil mengetahui bahwa informasi dan data sensitif yang berubah antar lingkungan tidak pernah tercampur. Juga membuatnya sangat jelas bagi siapa pun yang melihat kode bahwa nilai-nilai ini disimpan dalam file dot sistem khusus Ini paketnya, bisa diinstal dengan composer https. //github. com/vlucas/phpdotenv Inilah yang dimaksud dengan konfigurasi. php file terlihat seperti sedang digunakan <?php namespace ProcessWire; // Load env variables from .env in root directory $dotenv = \Dotenv\Dotenv::createImmutable(__DIR__ . '/../'); $dotenv->load(); $config->debug = filter_var($_ENV['CMS_DEBUG'], FILTER_VALIDATE_BOOLEAN); $config->usePageClasses = filter_var($_ENV['CMS_USE_PAGE_CLASSES'], FILTER_VALIDATE_BOOLEAN); $config->useFunctionsAPI = filter_var($_ENV['CMS_USE_FUNCTIONS_API'], FILTER_VALIDATE_BOOLEAN); /** * Database Configuration */ $config->dbHost = $_ENV['CMS_DB_HOST']; $config->dbName = $_ENV['CMS_DB_NAME']; $config->dbUser = $_ENV['CMS_DB_USER']; $config->dbPass = $_ENV['CMS_DB_PASS']; $config->dbPort = $_ENV['CMS_DB_PORT']; $config->dbEngine = $_ENV['CMS_DB_ENGINE']; // Etc... Semoga ini bermanfaat bagi seseorang
Tautkan ke komentarBerbagi di situs lainLebih banyak opsi berbagi monolonomDiposting 30 November 2021 monolonom
Diposting 30 November 2021 Ini adalah pengaturan @FireWire yang sangat menarik, tetapi saya bertanya-tanya bagaimana Anda berurusan dengan kunci API saat digunakan oleh modul. Biasanya, seperti dalam modul Kefasihan (luar biasa) Anda, kunci API disimpan di db melalui konfigurasi modul, yang nyaman karena bersifat lokal ke modul tetapi dalam penyiapan Anda akhirnya tersebar di sekitar kredensial Anda Ini pertanyaan terbuka tetapi haruskah ada objek $config yang akan berisi kunci api yang dapat diperiksa oleh modul terlebih dahulu dan jika kosong bergantung pada administrator untuk memasukkan ini dalam konfigurasi modul? Tautkan ke komentarBerbagi di situs lainLebih banyak opsi berbagi FireWireDiposting 30 November 2021 FireWire
Diposting 30 November 2021
Anda 100% benar tentang penyimpanan kunci DB untuk modul. Kasus penggunaan saya untuk kredensial di. env adalah untuk kebutuhan terkait non-modul yang diperlukan dalam berbagai skrip di sekitar basis kode. Beberapa di antaranya tidak ada dalam namespace ProcessWire sehingga wire() & $config tidak tersedia Contoh yang bagus adalah tempat saya bekerja. Saya telah membuat REST API di seluruh perusahaan untuk berinteraksi dengan sistem kami sehingga kunci tersebut ada di. lingkungan. Sekilas membuatnya sangat mudah untuk dikerjakan. Dengan nama variabel yang bersih, saya tidak mengalami polusi/tabrakan $_ENV. Dua variabel khusus yang kami buat adalah $config->envIsProduction dan $config->envIsDevelopment untuk membantu mengubah perilaku kode bila diperlukan, kami menggunakannya untuk melakukan hal-hal seperti mengganti skrip di markup (seperti produksi/pengembangan Google Tag Manager/Analytics) Inilah contoh yang lebih kuat (dummy) dari pembangunan lokal kami. env, ENVIRONMENT="development" # Either production or development # CMS CMS_DEBUG="true" CMS_CHMOD_DIR=0755 CMS_CHMOD_FILE=0644 CMS_USE_PAGE_CLASSES="true" CMS_USE_FUNCTIONS_API="true" CMS_PREPEND_TEMPLATE_FILE="_init.php" CMS_USER_AUTH_SALT="d5e3ac4deba1e382255bbd8755d7e713" CMS_LOCALE="en_US.UTF-8" CMS_TIMEZONE="America/Los_Angeles" CMS_DEFAULT_ADMIN_THEME="AdminThemeUikit" CMS_INSTALLED=1580677417 CMS_MODULE_INSTALL="true" # CMS Database - Development CMS_DB_HOST="127.0.0.1" CMS_DB_NAME="pw_website_db_name" CMS_DB_USER="db_user_name" CMS_DB_PASS="hB99kVrqS444VZlrrr" CMS_DB_PORT="3306" CMS_DB_ENGINE="InnoDB" # Renova Energy API - Development RE_API_URL="https://secure-tunnel-url.ngrok.io/" RE_API_KEY_WEBSITE="d5d891e204f5473990bb533cf7fca22f" RE_API_KEY_EVENT="531706b9837744ecbbf2b008bc11a681" # Mailgun MG_KEY="5af07ec6-315c-48d9-b615-f1cfb3d75820" MG_DOMAIN="mg.ourconfigureddomain.com" # Forecast.io FORECAST_IO_KEY="5fce4a3251f711ecbf630242ac130002" # CallTrackingMetrics Webhook Auth Token CTM_WEBHOOK_AUTH_HASH="227040707a1b4e13bc88facf928defe0" # Web API Authentication Keys WEB_API_KEY_SALESFORCE="84f13985-77f5-4521-9c2d-1567ddb9bf2e" WEB_API_KEY_APP="e7051f6e-5905-47f6-9108-93d2f02a53b8" Juga, terima kasih atas kata-kata baik tentang Kefasihan, nantikan rilis besar (terbesar) berikutnya segera Tautkan ke komentarBerbagi di situs lainLebih banyak opsi berbagi dotneticDiposting 30 November 2021 dotnetic
Diposting 30 November 2021
Saya pikir ini harus menjadi default untuk kredensial di ProcessWire. Banyak CMS atau Framework lain seperti Laravel atau Statamic (yang merupakan aplikasi Laravel) menggunakan cara ini
Tautkan ke komentarBerbagi di situs lainLebih banyak opsi berbagi FireWireDiposting 30 November 2021 FireWire
Diposting 30 November 2021 @dotnetic Saya mengambilnya setelah mengembangkan API kami di Slim dan melihat beberapa praktik terbaik. Akan sangat bagus jika ini adalah default ProcessWire Apakah aman menyimpan kata sandi dalam file PHP?Cukup aman . Untuk mendapatkan konten file php, seorang peretas perlu menyusup ke server Anda, atau Anda perlu salah mengonfigurasinya.
Apakah hash PHP aman?Hasil hash dari password_hash() aman karena. Ini menggunakan algoritma hashing yang kuat. Itu menambahkan garam acak untuk mencegah tabel pelangi dan serangan kamus.
Bagaimana saya bisa melindungi kata sandi basis data saya di PHP?password_hash() function menyediakan fasilitas untuk menyimpan kata sandi pengguna dengan aman ke database.
Apakah aman menyimpan kata sandi di database?Menyimpan kata sandi teks biasa dalam database adalah dosa . Fungsi enkripsi menyediakan pemetaan satu-satu antara input dan output dan selalu dapat dibalik. Jika peretas mendapatkan kuncinya, dia akan dapat mendekripsi kata sandi. Cara yang lebih baik adalah dengan menggunakan fungsi hash kriptografi satu arah. |