Seberapa aman nama pengguna dan kata sandi di php?

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

  1. Tinggalkan saja konfigurasi. php apa adanya, dengan kata sandi basis data dalam teks biasa. Pastikan konfigurasi. php ditambahkan ke. file .gitignore. [Tapi saya sebenarnya ingin memiliki konfigurasi. php dalam kontrol sumber karena sangat penting untuk pengoperasian sistem. ]
  2. Buat file PHP di luar root web, seperti kata sandi. php, yang berisi fungsi databasePassword(). Sertakan file ini dari konfigurasi. php dan referensi fungsi. [Saya tidak suka ini karena ini menciptakan kemungkinan ketergantungan yang tidak jelas di luar direktori situs. ]
  3. Tetapkan kata sandi basis data dalam variabel lingkungan di file konfigurasi PHP-FPM (env[DB_PASSWD] = MyPassword). Kemudian gunakan fungsi getenv() PHP di konfigurasi. file php. [Mungkin tidak terlalu aman, dan kemudian tidak berfungsi saat API ProcessWire diakses dari skrip yang berdiri sendiri. ]
  4. Tetapkan kata sandi basis data dalam variabel lingkungan yang ditentukan dalam. file .bashrc. Gunakan fungsi getenv() di konfigurasi. php. [Mungkin tidak terlalu aman. ]
  5. Atur mysql. default_pw di php. ini [Komentar di file ini mengatakan ini adalah ide yang buruk. ]

Tak satu pun dari opsi ini yang tampaknya ideal. Apakah ada yang punya saran?

Bersulang,

Warwick

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Seberapa aman nama pengguna dan kata sandi di php?
Seberapa aman nama pengguna dan kata sandi di php?

Craig

Diposting 16 November 2021

Craig

  • Seberapa aman nama pengguna dan kata sandi di php?
    Seberapa aman nama pengguna dan kata sandi di php?

  • Anggota
    • 371
    • 648
  • LokasiNewcastle upon Tyne, UK

    • Membagikan

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

  • Seberapa aman nama pengguna dan kata sandi di php?
    8

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Seberapa aman nama pengguna dan kata sandi di php?
Seberapa aman nama pengguna dan kata sandi di php?

FireWire

Diposting 30 November 2021

FireWire

  • Seberapa aman nama pengguna dan kata sandi di php?
    Seberapa aman nama pengguna dan kata sandi di php?

  • Anggota
    • 170
    • 172
  • LokasiCalifornia

    • Membagikan

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

  • env adalah file sistem yang dilindungi secara otomatis di Apache dan tidak akan dilayani (kecuali seseorang secara aktif menimpa ini, tetapi itu akan buruk)
  • File-file ini tidak ditambahkan ke repositori Git dan tidak pernah disimpan
  • Kita punya. env untuk lokal, pementasan, dan produksi. Isi setiap file disimpan secara keseluruhan sebagai catatan aman di pengelola kata sandi kami
  • Pustaka dotenv dimuat sekali dalam konfigurasi. php dan nilainya tersedia secara global
  • Kami juga menyimpan kredensial untuk API dan layanan eksternal. Ini memungkinkan kami untuk menyimpan tidak hanya kredensial, tetapi nilai apa pun yang berbeda antara lokal/pementasan/produksi
  • Kami menyimpan semua konfigurasi kami. nilai variabel php di. env sehingga konfigurasi. php adalah agnostik lingkungan dan kami selalu yakin bahwa. env adalah satu-satunya sumber kebenaran untuk seluruh konfigurasi CMS

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

 

  • Seberapa aman nama pengguna dan kata sandi di php?
    8

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Seberapa aman nama pengguna dan kata sandi di php?
Seberapa aman nama pengguna dan kata sandi di php?

monolonom

Diposting 30 November 2021

monolonom

  • Seberapa aman nama pengguna dan kata sandi di php?
    Seberapa aman nama pengguna dan kata sandi di php?

  • Anggota
    • 159
    • 216
  • LokasiBrussel

    • Membagikan

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 komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Seberapa aman nama pengguna dan kata sandi di php?
Seberapa aman nama pengguna dan kata sandi di php?

FireWire

Diposting 30 November 2021

FireWire

  • Seberapa aman nama pengguna dan kata sandi di php?
    Seberapa aman nama pengguna dan kata sandi di php?

  • Anggota
    • 170
    • 172
  • LokasiCalifornia

    • Membagikan

Diposting 30 November 2021

5 jam yang lalu, kata monollonom

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?

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 komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Seberapa aman nama pengguna dan kata sandi di php?
Seberapa aman nama pengguna dan kata sandi di php?

dotnetic

Diposting 30 November 2021

dotnetic

  • Seberapa aman nama pengguna dan kata sandi di php?
    Seberapa aman nama pengguna dan kata sandi di php?

  • Anggota
    • 974
    • 1.123
  • LokasiMünster, Jerman

    • Membagikan

Diposting 30 November 2021

14 jam yang lalu, kata FireWire

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

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

  • Seberapa aman nama pengguna dan kata sandi di php?
    2

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Seberapa aman nama pengguna dan kata sandi di php?
Seberapa aman nama pengguna dan kata sandi di php?

FireWire

Diposting 30 November 2021

FireWire

  • Seberapa aman nama pengguna dan kata sandi di php?
    Seberapa aman nama pengguna dan kata sandi di php?

  • Anggota
    • 170
    • 172
  • LokasiCalifornia

    • Membagikan

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.

Bagaimana cara membuat login PHP aman?

Mulai. Ada beberapa langkah yang perlu kita ambil sebelum kita membuat sistem login aman kita. .
Membuat Desain Form Login. .
Membuat Database dan mengatur Tabel. .
Otentikasi Pengguna dengan PHP. .
Membuat Halaman Beranda. .
Membuat Halaman Profil. .
Membuat Skrip Logout

Bagaimana cara menyimpan nama pengguna dan kata sandi di PHP?

fungsi password_hash() menyediakan fasilitas untuk menyimpan password pengguna dengan aman ke database. Contoh. Kata sandi parameter pertama akan berisi kata sandi normal. Parameter kedua akan berisi PASSWORD_BCRYPT untuk membuat aman selain itu berisi PASSWORD_DEFAULT sebagai default

Mengapa PHP begitu aman?

Namun, Pengembang PHP memiliki hak istimewa untuk menghindari ancaman umum seperti pemalsuan permintaan lintas situs, injeksi SQL, dan perusakan data . Dan semua ini berguna dengan bantuan fitur keamanan bawaan PHP yang memudahkan pengembang untuk melindungi situs web.