Rumah >pembangunan bahagian belakang >tutorial php >$_SERVER[\'HTTP_HOST\'] lwn. $_SERVER[\'SERVER_NAME\']: Manakah Anda Perlu Gunakan untuk Pautan Selamat?

$_SERVER[\'HTTP_HOST\'] lwn. $_SERVER[\'SERVER_NAME\']: Manakah Anda Perlu Gunakan untuk Pautan Selamat?

Barbara Streisand
Barbara Streisandasal
2024-11-24 21:53:35346semak imbas

$_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME']: Which Should You Use for Secure Links?

Pembolehubah Pelayan PHP: 'HTTP_HOST' lwn. 'SERVER_NAME'

Anda telah menemui beberapa maklumat yang mencadangkan bahawa menggunakan mana-mana $_SERVER pembolehubah tidak selamat, menyebabkan anda mempersoalkan kesesuaian penggunaan $_SERVER['HTTP_HOST'] dan $_SERVER['SERVER_NAME']. Mari kita jelaskan keadaan.

Seperti yang telah anda kumpulkan, $_SERVER['SERVER_NAME'] ditentukan oleh konfigurasi pelayan web, manakala $_SERVER['HTTP_HOST'] adalah berdasarkan permintaan pelanggan. Perbezaan ini menimbulkan persoalan tentang pembolehubah mana yang hendak digunakan untuk definisi pautan yang boleh dipercayai di seluruh tapak.

Walaupun nampaknya logik untuk menggunakan $_SERVER['HTTP_HOST'] untuk keserasian, artikel Chris Shiflett "SERVER_NAME Versus HTTP_HOST" mendedahkan situasi yang lebih kompleks. Pelayan web Apache boleh dikonfigurasikan untuk menggunakan nama kanonik, memastikan nama pelayan yang konsisten dengan SERVER_NAME. Walau bagaimanapun, jika konfigurasi ini tidak dikuatkuasakan, bergantung pada HTTP_HOST sahaja mungkin tidak mencukupi.

Untuk memastikan integriti pautan anda, pertimbangkan pilihan ini:

  • Kuatkuasakan Canonical Nama: Konfigurasikan Apache untuk menggunakan nama kanonik, memastikan SERVER_NAME sentiasa menyediakan pelayan yang betul nama.
  • Sahkan Nama Hos: Gunakan senarai putih untuk mengesahkan bahawa nama hos yang diberikan dalam pengepala HTTP_HOST adalah sah. Contoh:
$allowed_hosts = array('foo.example.com', 'bar.example.com');
if (!isset($_SERVER['HTTP_HOST']) || !in_array($_SERVER['HTTP_HOST'], $allowed_hosts)) {
    header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request');
    exit;
}

Dengan menilai pilihan ini dan mempertimbangkan kebimbangan keselamatan yang dibangkitkan, anda boleh membuat keputusan termaklum tentang pendekatan yang paling sesuai untuk skrip PHP anda.

Atas ialah kandungan terperinci $_SERVER[\'HTTP_HOST\'] lwn. $_SERVER[\'SERVER_NAME\']: Manakah Anda Perlu Gunakan untuk Pautan Selamat?. 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