在本文中我將描述怎麼管理安全站點和非安全站點的 url 管理。
安全站點的內容使用https
ssl (安全套接字層) 協議傳送,而非安全站點使用http
協議。為了描述簡單,我們稱前者https
內容/頁,後者 'http' 內容/頁。乙個嚴格要求的**通常需要一些頁面使用https
,一些頁面使用http
。例如,為了防止密碼嗅探,我們的登入頁面使用https
,而為了減輕伺服器壓力,對於不敏感的頁面(例如,主頁)我們使用http
。
當我們在https
頁面是我們會需要生成http
頁面 url,反之亦然。例如,乙個站點有乙個所有頁面都使用的主選單,主選單中包含有,https
(例如;登入頁) 和http
(例如:關於頁) 的鏈結。如果我們在乙個http
頁面,我們可以直接鏈結到其他http
頁面(例如: /about),但是我們不得不使用絕對url位址使用https
協議鏈結到其他https
頁面。同上如果我們在https
頁面,我們也會遇到類似的情況。
另一種情況是我們使用http
協議請求也安全頁面,我們應當將瀏覽器重定向到使用https
協議,反之亦然。重定義通常為 301 永久重定向。這可能使用 web 伺服器的重寫規則實現。但是如果我們要細化安全和非安全的頁面,重寫規則可能會變得非常複雜。
為了實現上面的兩個需求,我們可以繼承 curlmanager, 如下
[php]
class urlmanager extends curlmanager
// 檢查當前協議是否是預期的協議
// 如果不是則需要在生成 url 時使用正確的主機資訊
$secureroute = $this->issecureroute($route);
return $secureroute ? $url : $this->hostinfo . $url;
} else
}public function parseurl($request)
}return $route;
}private $_securemap;
/*** @param string 需要檢查的 url 路由
* @return boolean 給出的 url 路由是否應該在 ssl 模式下
*/protected function issecureroute($route)
}$route = strtolower($route);
if (isset($this->_securemap[$route])) else
}}
現在,在應用程式的配置,我們應當使用我們的 url 管理器來取代預設。
[php]
return array(
// ....
'components' => array(
'urlmanager' => array(
'class' => 'urlmanager',
'urlformat' => 'path',
'hostinfo' => '',
'securehostinfo' => '',
'secureroutes' => array(
'site/login', // site/login action
'site/signup', // site/signup action
'settings', // all actions of settingscontroller
),),
),);
在上面的**中,我們配置了urlmanager
登入、註冊和所有設定頁面為安全頁面。如果,你想新增其他頁面,只需向secureroutes
陣列中新增相應內容。
英文原文
NGINX 主站點,虛擬站點,安全站點
簡介 nginx engine x 是俄羅斯人編寫的十分輕量級的http伺服器,是乙個高效能的http和反向 伺服器,同時也是一imap pop3 smtp 伺服器。官方 usr local nginx sbin nginx v 檢視安裝了那些模組 實驗準備 安裝常用工具 tab鍵 bash com...
Nginx下配置HTTPS(SSL)安全站點
一 準備證書 通常情況下 的ssl證書是由專門的ca機構 如verisign 頒發,同時需要交納一定數額的費用。可是對於平時開發測試或其他情況下,我們自己也可以充當ca來生成自己頒發的證書。當然與前者相比缺點很明顯 不能獲得各個瀏覽器的信任,會彈出警告提示。如 好訊息是,對安全性要求稍低的 現在可以...
安全維護 IIS asp 站點的高階技巧
一 前言 僅以此文感謝好友bigeagle。不是他,我可能不用這麼擔心win2000安全問題的。呵呵!人說,一朝被蛇咬,十年怕.就是這樣。2000年初,當我終於擺脫winnt 4.0 server那可怕的補 丁之旅,邁向win2000 server時。我終於可以比較放心我的伺服器了。但隨著sp1的補...