前陣子研究出克服入口網站內嵌其他網站跨網站存取限制的方法,實際會用於整合兩台以上網站,但在開發測試期間也要搞兩台機器太麻煩,於是我用了點技巧,在windows/system32/drivers/etc/hosts加入額外設定:

127.0.0.1    portal.dev.net
127.0.0.1    webap.dev.net
127.0.0.1    mybox

如此開發機的IIS就可一人分飾多角,用 httq://portal.dev.net/ 及 httq://webap.dev.net/ 都能連上,還會被瀏覽器視為不同網域機器,模擬正式環境的情境。經初步測試成功就以為天衣無縫,沒想到今天踢到鐵板。

初期開啟匿名存取,測試一切順利,到第二階段改用Windows驗證,卻發現使用localhost、127.0.0.1、機器名稱登入正常,一旦改用 portal.dev.net 或 webap.dev.net,甚至 mybox,網頁會不斷彈出帳號密碼視窗,帳號密碼正確也無法登入。進行對照實驗,若改從另一台機器測試(在hosts加入同樣項目指向我的LAN IP)可正常登入,歸納出「使用localhost、127.0.0.1、機器名稱或FQDN以外的URL登入本機IIS,將無法通過Windows驗證」的結論。

頓時心頭涼了半截,難道為此真得搞另一台機器進行測試?

爬文找到線索:MS KB有篇討論用FQDN或自訂Web名稱無法登入IIS的文章提及類似場景。文中提到Windows 2003 SP1起啟用一種名為Loopback Check的安全機制,藉以防止本機惡意程式模擬外來連線進行攻擊。KB提到兩種解決方法:修改Registry列舉會使用的別名或停用LoopBackCheck。前者採白名單開放較嚴謹,後者一次搞定較乾脆,衡量停用檢查增加風險有限,決定使用後者:

加入Registry後IISREST,終於能用portal.dev.net登入本機,再次驚險過關。


Comments

Be the first to post a comment

Post a comment