HTTPS部署錦囊丨SSL數(shù)字證書知識(shí)貼
HTTPS 部署錦囊丨SSL 數(shù)字證書知識(shí)貼1何時(shí)及為什么要部署HTTPS只要您的網(wǎng)站有任何非公開(kāi)信息,您就應(yīng)當(dāng)部署HTTPS ,包括那些需要登陸的網(wǎng)站——畢竟,如果信息是公開(kāi)的,根本就無(wú)需要求登陸。
HTTPS 部署錦囊丨SSL 數(shù)字證書知識(shí)貼
1何時(shí)及為什么要部署HTTPS
只要您的網(wǎng)站有任何非公開(kāi)信息,您就應(yīng)當(dāng)部署HTTPS ,包括那些需要登陸的網(wǎng)站——畢竟,如果信息是公開(kāi)的,根本就無(wú)需要求登陸。那些只有管理員才能登陸的網(wǎng)站,比如典型的Wordpress 站點(diǎn),也需要HTTPS 。
部署HTTPS 是必須的,因?yàn)槿绻麤](méi)有它,即使有人在被動(dòng)監(jiān)聽(tīng),也就是監(jiān)聽(tīng)而不操控網(wǎng)絡(luò)流量,他也能順著HTTP 傳輸讀取到密碼或認(rèn)證令牌等機(jī)密信息。特別是公共熱點(diǎn)通常沒(méi)有使用任何WiFi 加密,因此監(jiān)聽(tīng)所有流量只不過(guò)是小菜一碟。這種情況在酒吧、賓館、火車和其他公共場(chǎng)所非常普遍。換句話說(shuō),如果你的用戶某些時(shí)候從公共熱點(diǎn)訪問(wèn)你的網(wǎng)站,而你又沒(méi)有使用HTTPS ,那么任何在公共熱點(diǎn)附近的人都可以監(jiān)聽(tīng)用戶所有的流量。這并不是監(jiān)聽(tīng)可能發(fā)生的唯一情況,但它確實(shí)很容易做到。
2. 如果我只是在登陸頁(yè)面使用HTTPS 呢?
別這么干。只在登陸頁(yè)面使用HTTPS 固然可以防止用戶的密碼被竊取,但這只是問(wèn)題的一部分。
,首先,您的網(wǎng)站上使用HTTPS 的部分越少,進(jìn)行主動(dòng)攔截就越容易:您的登陸鏈接可能指向一個(gè)HTTPS URL,但如果我在用戶點(diǎn)擊之前就改變了鏈接,HTTPS 就沒(méi)法幫到你了。部分使用HTTPS 也將面臨被動(dòng)攔截的風(fēng)險(xiǎn)。下面是一個(gè)長(zhǎng)長(zhǎng)的解釋哦,感興趣的朋友繼續(xù)滑動(dòng)頁(yè)面哈!
驗(yàn)證用戶名和密碼只是web 上用戶身份驗(yàn)證的一部分:我們還需要記住某個(gè)特定用戶已經(jīng)過(guò)驗(yàn)證和用于驗(yàn)證的賬戶。最常見(jiàn)的辦法是使用session cookies,這通常意味著瀏覽器會(huì)將一個(gè)長(zhǎng)的隨機(jī)字符串,也就是session ID ,存儲(chǔ)在一個(gè)cookie 中,例如在PHP 中可以使用PHPSESSID 來(lái)實(shí)現(xiàn)。服務(wù)器端的數(shù)據(jù)庫(kù)知道那個(gè)隨機(jī)字符串對(duì)應(yīng)某個(gè)特定的session ,而那個(gè)session 又對(duì)應(yīng)著某個(gè)特定的已驗(yàn)證用戶。如果我用某種方式得到了你的session ID,那么當(dāng)你登陸之后,我就獲得了你所有的權(quán)限,這和我知道你的密碼沒(méi)什么兩樣。
考慮到這一風(fēng)險(xiǎn),session ID都非常長(zhǎng)且隨機(jī),并且它的生命期是有限的,這就意味著我沒(méi)法靠猜測(cè)來(lái)獲知它,因此session ID是足夠安全的。但是,由于cookie 的運(yùn)作方式,瀏覽器每次向網(wǎng)站發(fā)請(qǐng)求時(shí)都會(huì)包含cookie 信息。所以,即使已經(jīng)登陸很久了,我請(qǐng)求的每個(gè)網(wǎng)頁(yè),哪怕通常情況下是公開(kāi)的網(wǎng)頁(yè),也會(huì)導(dǎo)致我的session cookie被瀏覽器發(fā)送出去。如果這時(shí)有人在監(jiān)聽(tīng),他們依然可以篡改我的賬戶。
如果您僅僅把網(wǎng)站中涉及管理員的部分置于SSL 的保護(hù)之下,同樣的情況也可能發(fā)生:當(dāng)你登陸并隨后訪問(wèn)非SSL 的公開(kāi)內(nèi)容時(shí),瀏覽器也會(huì)發(fā)送session cookie。
,簡(jiǎn)而言之:由于允許訪問(wèn)用戶賬戶的session cookie 在每一次請(qǐng)求中都會(huì)被發(fā)送,僅僅保障登陸頁(yè)面的安全是絕對(duì)不夠的。
3. 我該如何更好地啟用HTTPS ?
強(qiáng)制使用HTTPS
一些網(wǎng)站購(gòu)買了SSL 證書并將其配置到Web 服務(wù)器上,以為這就算完事兒了。但這只是表明您啟用了HTTPS 選項(xiàng),而用戶很可能不會(huì)注意到。為確保每個(gè)用戶都從HTTPS 中受益,你應(yīng)該將所有傳入的HTTP 請(qǐng)求重定向至HTTPS 。這意味著任何一個(gè)訪問(wèn)你的網(wǎng)站的用戶都將自動(dòng)切換到HTTPS ,從那以后他們的信息傳輸就安全了。
但上述做法還是留下了一個(gè)空子:當(dāng)用戶第一次向你的網(wǎng)站發(fā)送請(qǐng)求時(shí),他們使用的是普通HTTP ,而那時(shí)他們可能就已經(jīng)在傳輸機(jī)密信息了。上述做法還留下了一個(gè)“中間人攻擊”漏洞(man-in-the-middle hole)。
嚴(yán)格傳輸安全協(xié)議
為進(jìn)一步加強(qiáng)控制,請(qǐng)啟用HTTP 嚴(yán)格傳輸安全協(xié)議。這是一種可由服務(wù)器發(fā)送的特殊的頭信息(header),它的含義是:在設(shè)定的時(shí)限內(nèi),你不能通過(guò)普通HTTP
,訪問(wèn)網(wǎng)站,也不能在證書不可靠時(shí)通過(guò)HTTPS 訪問(wèn)網(wǎng)站。二級(jí)域名也可以選擇包含HSTS 。
HSTS 是一種簡(jiǎn)單的服務(wù)器頭信息,且容易配置。但是要注意在時(shí)限結(jié)束之前無(wú)法撤銷設(shè)定,因此不要把時(shí)限設(shè)置得太長(zhǎng)。你應(yīng)該同時(shí)使用HSTS 和HTTPS 重定向,而不是用前者取代后者。
安全的cookies
Cookies ,包括session cookie ,有一個(gè)可選的安全標(biāo)記。它大致的含義是:“不要用普通HTTP 連接發(fā)送這個(gè)cookie” 啟用這個(gè)安全標(biāo)記,你的cookie 就不會(huì)被瀏覽器的初始HTTP 請(qǐng)求發(fā)送出去,直到連接切換為HTTPS 且不再會(huì)被監(jiān)聽(tīng)為止。
4. 我可以只為已驗(yàn)證用戶部署SSL 嗎?
不可以
一旦你遵循了上述指南,當(dāng)用戶發(fā)起普通HTTP 連接時(shí),你沒(méi)法知道他們是否經(jīng)過(guò)了驗(yàn)證。關(guān)鍵在于:除非用戶已經(jīng)連上了SSL ,否則他們不應(yīng)該傳輸任何機(jī)密信息,比如session cookie。
,雖然我還是有很多方法來(lái)解決這些安全問(wèn)題,但它們可能會(huì)在某個(gè)環(huán)節(jié)上失效?,F(xiàn)SSL 數(shù)字證書的成本也不是很高,所以采用其他方案其實(shí)并不劃算。
以上關(guān)于HTTPS 部署問(wèn)題的解答,小編敘述的會(huì)有點(diǎn)繁冗,希望能幫助到大家。微信朋友們可以收藏起來(lái),慢慢看哈!
出品人:亞洲誠(chéng)信