Rumah >Operasi dan penyelenggaraan >Apache >Bagaimanakah saya melaksanakan pengesahan HTTP (Auth Basic, Digest Auth) di Apache menggunakan mod_auth_basic dan mod_auth_digest?
Melaksanakan Pengesahan Asas dan Digest di Apache Menggunakan mod_auth_basic
dan mod_auth_digest
melibatkan mengkonfigurasi host maya Apache atau fail konfigurasi direktori. Mari kita mulakan dengan pengesahan asas.
Pengesahan Asas:
mod_auth_basic
diaktifkan. Ini biasanya dilakukan dengan uncommenting LoadModule auth_basic_module modules/mod_auth_basic.so
Line dalam fail konfigurasi Apache anda ( httpd.conf
atau fail konfigurasi hos maya yang berkaitan). Buat fail kata laluan: Anda memerlukan fail kata laluan yang mengandungi nama pengguna dan kata laluan mereka yang disulitkan. Apache menyediakan utiliti htpasswd
untuk ini. Gunakannya untuk membuat fail baru (misalnya, .htpasswd
) dan tambahkan pengguna:
<code class="bash">sudo htpasswd -c /path/to/.htpasswd username</code>
-c
Ulangi ini untuk setiap pengguna. Secara penting, simpan fail ini dengan selamat; Komprominya menjejaskan pengesahan anda.
Konfigurasikan Apache: Dalam fail konfigurasi Apache anda, dalam <directory></directory>
atau <location></location>
blok yang menentukan kawasan yang dilindungi, tambahkan arahan berikut:
<code class="apache"><directory> AuthType Basic AuthName "Restricted Area" AuthUserFile /path/to/.htpasswd Require valid-user </directory></code>
Menggantikan /path/to/protected/directory
dan /path/to/.htpasswd
dengan laluan sebenar. AuthName
menetapkan nama Realm yang dipaparkan kepada pengguna.
Pengesahan Digest:
Pengesahan Digest lebih selamat daripada pengesahan asas kerana ia mengelakkan menghantar kata laluan dalam teks biasa. Prosesnya serupa:
mod_auth_digest
diaktifkan (serupa dengan mod_auth_basic
).htpasswd
yang sama seperti dahulu, tetapi anda mungkin mahu fail kata laluan yang berasingan untuk Pengesahan Digest untuk memastikan perkara yang dianjurkan. Konfigurasikan Apache: Konfigurasi adalah serupa dengan pengesahan asas, tetapi dengan AuthType
berubah:
<code class="apache"><directory> AuthType Digest AuthName "Restricted Area" AuthUserFile /path/to/.htdigest Require valid-user </directory></code>
Ganti /path/to/.htdigest
dengan laluan ke fail kata laluan anda.
Pengesahan Asas: Menghantar nama pengguna dan kata laluan dalam teks biasa (BASE64 yang dikodkan, tetapi mudah diekodkan). Ini menjadikannya terdedah kepada eavesdropping jika sambungan tidak dijamin dengan HTTPS. Jangan sekali -kali menggunakan pengesahan asas tanpa HTTPS.
Pengesahan Digest: Lebih selamat. Ia memancarkan hash kata laluan, mencegah eavesdropping daripada mendedahkan kata laluan sebenar. Walaupun lebih selamat daripada pengesahan asas, ia masih terdedah kepada serangan tertentu seperti serangan ulangan dan serangan lelaki-dalam-pertengahan jika tidak dilaksanakan dengan betul dalam konteks yang selamat (HTTPS).
Apache membolehkan kawalan halus ke atas pengesahan menggunakan <directory></directory>
dan <location></location>
arahan.
<directory></directory>
: Menggunakan pengesahan ke seluruh direktori dan subdirektori. Laluan yang ditentukan harus mutlak.<location></location>
: Menggunakan pengesahan kepada URL tertentu, tanpa mengira lokasi mereka di sistem fail. Ini berguna untuk melindungi skrip atau halaman tertentu. Contoh: Untuk melindungi hanya /private
dan subdirektori, tetapi tidak /public
:
<code class="apache"><directory> AuthType Basic AuthName "Private Area" AuthUserFile /path/to/.htpasswd Require valid-user </directory> <directory> # No authentication required here </directory></code>
Ingatlah untuk memulakan semula Apache selepas membuat perubahan konfigurasi ( sudo systemctl restart apache2
pada Debian/Ubuntu).
Kelayakan pengguna diuruskan melalui utiliti htpasswd
.
htpasswd -m /path/to/.htpasswd newuser
(pilihan -m
menggunakan algoritma hashing MD5 yang lebih selamat).htpasswd /path/to/.htpasswd existinguser
. Ini akan mendorong anda untuk kata laluan baru.htpasswd
. Pendekatan yang paling selamat adalah untuk membuat fail kata laluan baru dengan pengguna yang dikehendaki, dan kemudian menggantikan yang lama. Anda perlu memastikan bahawa semua proses Apache dihentikan sebelum melakukan ini.Ingatlah untuk sentiasa menggunakan HTTPS apabila melaksanakan pengesahan HTTP untuk melindungi daripada mengasyikkan. Pertimbangkan kaedah pengesahan yang lebih mantap seperti OAuth 2.0 atau OpenID Connect untuk peningkatan keselamatan dalam persekitaran pengeluaran.
Atas ialah kandungan terperinci Bagaimanakah saya melaksanakan pengesahan HTTP (Auth Basic, Digest Auth) di Apache menggunakan mod_auth_basic dan mod_auth_digest?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!