我做了很多搜索,還閱讀了PHP $ _SERVER文檔。對(duì)于在我的網(wǎng)站中使用的簡(jiǎn)單鏈接定義,我的PHP腳本使用哪個(gè)權(quán)限?$_SERVER['SERVER_NAME'] 是基于您的Web服務(wù)器的配置文件(在我的情況下是Apache2),并根據(jù)一些指令而變化:(1)VirtualHost,(2)ServerName,(3)UseCanonicalName等。$_SERVER['HTTP_HOST'] 基于客戶的要求。因此,在我看來,為了使我的腳本盡可能兼容而使用的正確方法是$_SERVER['HTTP_HOST']。這個(gè)假設(shè)是否正確?后續(xù)評(píng)論:我想在讀完這篇文章之后我有點(diǎn)偏執(zhí),并注意到有些人說“他們不會(huì)相信任何一個(gè)$_SERVER變種”:http://markjaquith.wordpress.com/2009/09/21/php-server-vars-not-safe-in-forms-or-links/http://php.net/manual/en/reserved.variables.server.php#89567(評(píng)論:Vladimir Kornea 14-Mar-2009 01:06)顯然,討論主要是關(guān)于$_SERVER['PHP_SELF']為什么你不應(yīng)該在表單action屬性中使用它而沒有適當(dāng)?shù)霓D(zhuǎn)義以防止XSS攻擊。我對(duì)上述原始問題的結(jié)論是$_SERVER['HTTP_HOST'],即使在表單中使用,也可以“安全”地使用網(wǎng)站上的所有鏈接,而不必?fù)?dān)心XSS攻擊。如果我錯(cuò)了,請(qǐng)糾正我。
3 回答

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
只是另外一個(gè)注意事項(xiàng) - 如果服務(wù)器在80以外的端口上運(yùn)行(在開發(fā)/內(nèi)聯(lián)網(wǎng)機(jī)器上可能是常見的),則HTTP_HOST包含端口,而不包含端口SERVER_NAME。
$_SERVER['HTTP_HOST'] == 'localhost:8080'
$_SERVER['SERVER_NAME'] == 'localhost'
(至少這是我在基于Apache端口的虛擬主機(jī)中注意到的)
正如邁克下面提到的,HTTP_HOST并沒有包含:443在HTTPS運(yùn)行時(shí)(除非你是一個(gè)非標(biāo)準(zhǔn)端口,我沒有測(cè)試運(yùn)行)。
- 3 回答
- 0 關(guān)注
- 1440 瀏覽
添加回答
舉報(bào)
0/150
提交
取消