Rumah >Operasi dan penyelenggaraan >Apache >Bagaimanakah saya melaksanakan pengesahan HTTP (Auth Basic, Digest Auth) di Apache menggunakan mod_auth_basic dan mod_auth_digest?

Bagaimanakah saya melaksanakan pengesahan HTTP (Auth Basic, Digest Auth) di Apache menggunakan mod_auth_basic dan mod_auth_digest?

Robert Michael Kim
Robert Michael Kimasal
2025-03-12 18:43:06325semak imbas

Melaksanakan Pengesahan HTTP 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:

  1. Dayakan modul: Pastikan bahawa 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).
  2. 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.

  3. 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:

  1. Dayakan modul: Pastikan mod_auth_digest diaktifkan (serupa dengan mod_auth_basic ).
  2. Buat fail kata laluan: Gunakan utiliti htpasswd yang sama seperti dahulu, tetapi anda mungkin mahu fail kata laluan yang berasingan untuk Pengesahan Digest untuk memastikan perkara yang dianjurkan.
  3. 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.

Implikasi Keselamatan Asas vs Pengesahan Digest

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).

Mengkonfigurasi Apache untuk memerlukan pengesahan untuk direktori atau fail tertentu

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).

Menguruskan dan mengemas kini kelayakan pengguna untuk pengesahan HTTP

Kelayakan pengguna diuruskan melalui utiliti htpasswd .

  • Menambah Pengguna: Gunakan htpasswd -m /path/to/.htpasswd newuser (pilihan -m menggunakan algoritma hashing MD5 yang lebih selamat).
  • Menukar Kata Laluan: Gunakan htpasswd /path/to/.htpasswd existinguser . Ini akan mendorong anda untuk kata laluan baru.
  • Menghapus Pengguna: Tidak ada arahan langsung untuk memadam pengguna dari fail 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn