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:
$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!