摘要:啟用嚴(yán)格傳輸安全協(xié)議來進(jìn)一步減少遭受攻擊的可能。這些措施將使攔截流量變得極其困難。這種情況在酒吧賓館火車和其他公共場所非常普遍。部分使用也將面臨被動攔截的風(fēng)險(xiǎn)。
許多Web開發(fā)者都知道SSL,但常見的情況是SSL沒有完整地部署或者沒有部署在它應(yīng)該部署的地方。這篇關(guān)于何時(shí)及如何部署SSL的簡要指南,將幫助你避免大多數(shù)常見錯(cuò)誤。
要點(diǎn)如果你有任何機(jī)密信息,或者你要進(jìn)行用戶登陸,哪怕只是讓管理員登陸,你就應(yīng)該部署HTTPS。風(fēng)險(xiǎn)并非只存在于理論上。
決不要部分部署HTTPS:請將它用于所有內(nèi)容,否則你將面臨許多風(fēng)險(xiǎn),比如session ID被攔截,其危害不亞于密碼被攔截。
如果你部署了HTTPS,請將任何普通的HTTP請求都重定向至HTTPS的URL,以強(qiáng)制所有的請求都通過HTTPS來處理。
啟用HTTP嚴(yán)格傳輸安全協(xié)議(HSTS)來進(jìn)一步減少遭受攻擊的可能。
在你的cookies,比如session cookie上設(shè)置安全標(biāo)記,確保它們不會經(jīng)由普通的HTTP請求而泄露。
什么是HTTPS?HTTPS是將HTTP置于SSL/TLS之上,其效果是加密HTTP流量(traffic),包括請求的URL、結(jié)果頁面、cookies、媒體資源和其他通過HTTP傳輸?shù)膬?nèi)容。企圖干擾HTTPS連接的人既無法監(jiān)聽流量,也無法更改其內(nèi)容。除了加密,遠(yuǎn)程服務(wù)器的身份也要進(jìn)行驗(yàn)證:畢竟,如果你都不知道另一端是誰,加密連接也就沒什么用處了。這些措施將使攔截流量變得極其困難。雖然攻擊者仍有可能知道用戶正在訪問哪個(gè)網(wǎng)站,但他所能知道的也就僅限于此了。
何時(shí)及為什么要部署HTTPS只要你的網(wǎng)站有任何非公開信息,你就應(yīng)當(dāng)部署HTTPS,包括那些需要登陸的網(wǎng)站——畢竟,如果信息是公開的,根本就無需要求登陸。那些只有管理員才能登陸的網(wǎng)站,比如典型的Wordpress站點(diǎn),也需要HTTPS。
部署HTTPS是必須的,因?yàn)槿绻麤]有它,即使有人在被動監(jiān)聽,也就是監(jiān)聽而不操控網(wǎng)絡(luò)流量,他也能順著HTTP傳輸讀取到密碼或認(rèn)證令牌等機(jī)密信息。
這種攻擊并非只存在于理論上。我自己(經(jīng)過許可)就干過幾次——在公共熱點(diǎn)(public hotspots)上這太容易做到了。公共熱點(diǎn)通常沒有使用任何WiFi加密,因此監(jiān)聽所有流量只不過是小菜一碟。這種情況在酒吧、賓館、火車和其他公共場所非常普遍。換句話說,如果你的用戶某些時(shí)候從公共熱點(diǎn)訪問你的網(wǎng)站,而你又沒有使用HTTPS,那么任何在公共熱點(diǎn)附近的人都可以監(jiān)聽用戶所有的流量。這并不是監(jiān)聽可能發(fā)生的唯一情況,但它確實(shí)很容易做到。
如果我只是在登陸頁面使用HTTPS呢?別這么干。只在登陸頁面使用HTTPS固然可以防止用戶的密碼被竊取,但這只是問題的一部分。
首先,你的網(wǎng)站上使用HTTPS的部分越少,進(jìn)行主動攔截就越容易:你的登陸鏈接可能指向一個(gè)HTTPS URL,但如果我在用戶點(diǎn)擊之前就改變了鏈接,HTTPS就沒法幫到你了。部分使用HTTPS也將面臨被動攔截的風(fēng)險(xiǎn)。
驗(yàn)證用戶名和密碼只是web上用戶身份驗(yàn)證的一部分:我們還需要記住某個(gè)特定用戶已經(jīng)過驗(yàn)證和用于驗(yàn)證的賬戶。最常見的辦法是使用session cookies,這通常意味著瀏覽器會將一個(gè)長的隨機(jī)字符串,也就是session ID,存儲在一個(gè)cookie中,例如在PHP中可以使用PHPSESSID來實(shí)現(xiàn)。服務(wù)器端的數(shù)據(jù)庫知道那個(gè)隨機(jī)字符串對應(yīng)某個(gè)特定的session,而那個(gè)session又對應(yīng)著某個(gè)特定的已驗(yàn)證用戶。如果我用某種方式得到了你的session ID,那么當(dāng)你登陸之后,我就獲得了你所有的權(quán)限,這和我知道你的密碼沒什么兩樣。
考慮到這一風(fēng)險(xiǎn),session ID都非常長且隨機(jī),并且它的生命期是有限的,這就意味著我沒法靠猜測來獲知它,因此session ID是足夠安全的。但是,由于cookie的運(yùn)作方式,瀏覽器每次向網(wǎng)站發(fā)請求時(shí)都會包含cookie信息。所以,即使已經(jīng)登陸很久了,我請求的每個(gè)網(wǎng)頁,哪怕通常情況下是公開的網(wǎng)頁,也會導(dǎo)致我的session cookie被瀏覽器發(fā)送出去。如果這時(shí)有人在監(jiān)聽,他們依然可以篡改我的賬戶。
如果你僅僅把網(wǎng)站中涉及管理員的部分置于SSL的保護(hù)之下,同樣的情況也可能發(fā)生:當(dāng)你登陸并隨后訪問非SSL的公開內(nèi)容時(shí),瀏覽器也會發(fā)送session cookie。
簡而言之:由于允許訪問用戶賬戶的session cookie在每一次請求中都會被發(fā)送,僅僅保障登陸頁面的安全是絕對不夠的。
我該如何正確地啟用HTTPS?一些網(wǎng)站購買了SSL證書并將其配置到Web服務(wù)器上,以為這就算完事兒了。但這只是表明你啟用了HTTPS選項(xiàng),而用戶很可能不會注意到。為確保每個(gè)用戶都從HTTPS中受益,你應(yīng)該將所有傳入的HTTP請求重定向至HTTPS。這意味著任何一個(gè)訪問你的網(wǎng)站的用戶都將自動切換到HTTPS,從那以后他們的信息傳輸就安全了。
但上述做法還是留下了一個(gè)空子:當(dāng)用戶第一次向你的網(wǎng)站發(fā)送請求時(shí),他們使用的是普通HTTP,而那時(shí)他們可能就已經(jīng)在傳輸機(jī)密信息了。上述做法還留下了一個(gè)“中間人攻擊”漏洞(man-in-the-middle hole)。
為進(jìn)一步加強(qiáng)控制,請啟用HTTP嚴(yán)格傳輸安全協(xié)議。這是一種可由服務(wù)器發(fā)送的特殊的頭信息(header),它的含義是:在設(shè)定的時(shí)限內(nèi),你不能通過普通HTTP訪問網(wǎng)站,也不能在證書不可靠時(shí)通過HTTPS訪問網(wǎng)站。二級域名也可以選擇包含HSTS。
HSTS是一種簡單的服務(wù)器頭信息,且容易配置。但是要注意在時(shí)限結(jié)束之前無法撤銷設(shè)定,因此不要把時(shí)限設(shè)置得太長。你應(yīng)該同時(shí)使用HSTS和HTTPS重定向,而不是用前者取代后者。
Cookies,包括session cookie,有一個(gè)可選的安全標(biāo)記。它大致的含義是:“不要用普通HTTP連接發(fā)送這個(gè)cookie” 啟用這個(gè)安全標(biāo)記,你的cookie就不會被瀏覽器的初始HTTP請求發(fā)送出去,直到連接切換為HTTPS且不再會被監(jiān)聽為止。
我可以只為已驗(yàn)證用戶部署SSL嗎?不可以。一旦你遵循了上述指南,當(dāng)用戶發(fā)起普通HTTP連接時(shí),你沒法知道他們是否經(jīng)過了驗(yàn)證。關(guān)鍵在于:除非用戶已經(jīng)連上了SSL,否則他們不應(yīng)該傳輸任何機(jī)密信息,比如session cookie。
雖然我還能想出其他的辦法來解決這些安全問題,但它們可能會在某個(gè)環(huán)節(jié)上失效。如今SSL的成本已相當(dāng)?shù)停捎闷渌桨覆⒉粍澦恪?/p> 進(jìn)一步閱讀
讀過這篇博客,你可能還想看看這幾篇文章:
An appeal for security for the ordinary developer
But where is the decryption key?
Proof of concept: arbitrary remote code execution through pickle-backed cookie-based sessions
想進(jìn)一步了解怎樣正確設(shè)置加密和其他SSL選項(xiàng),你可以看看Qualys Labs的:
SSL服務(wù)器測試
最佳實(shí)踐文檔
GitHub改進(jìn)其SSL配置時(shí)的考量
Mozilla的TLS文檔
Mozilla的TLS文檔可能會嚇到新手。尚處于草案階段的Applied Crypto Hardening也不錯(cuò),它提供了直接可用的配置模板并詳細(xì)解釋了模板中所用選項(xiàng)的合理性。
原文:A basic guide to when and how to deploy HTTPS
轉(zhuǎn)載自:伯樂在線 - LieGroup
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/11112.html
摘要:注意通過創(chuàng)建的云主機(jī)云盤等資源,刪除資源請不要通過具體的產(chǎn)品列表頁刪除,否則可能導(dǎo)致運(yùn)行不正常或數(shù)據(jù)丟失風(fēng)險(xiǎn),可以通過將資源釋放或解綁刪除。會使用到以下產(chǎn)品的全部操作權(quán)限,例如代替你創(chuàng)建刪除云主機(jī),由此產(chǎn)生的費(fèi)用由你負(fù)責(zé),請知悉。注意:通過UK8S創(chuàng)建的云主機(jī)、云盤、EIP等資源,刪除資源請不要通過具體的產(chǎn)品列表頁刪除,否則可能導(dǎo)致UK8S運(yùn)行不正常或數(shù)據(jù)丟失風(fēng)險(xiǎn),可以通過UK8S將資源釋放...
摘要:第二部分學(xué)習(xí)前端開發(fā)第二部分指出了學(xué)習(xí)成為一個(gè)前端開發(fā)者所需的自學(xué)資源和教學(xué)資源譯者注教學(xué)資源包括有講師指導(dǎo)的付費(fèi)課程計(jì)劃學(xué)院和訓(xùn)練營。第三部分前端開發(fā)工具第三部分簡要地介紹和指出了一些前端圈內(nèi)的工具。 參與者(排名不分先后):blueken; brucecham; cfanlife; DDU1222; LittlePineapple; MatildaJin; MAYDAY1993;...
摘要:第二部分學(xué)習(xí)前端開發(fā)第二部分指出了學(xué)習(xí)成為一個(gè)前端開發(fā)者所需的自學(xué)資源和教學(xué)資源譯者注教學(xué)資源包括有講師指導(dǎo)的付費(fèi)課程計(jì)劃學(xué)院和訓(xùn)練營。第三部分前端開發(fā)工具第三部分簡要地介紹和指出了一些前端圈內(nèi)的工具。 參與者(排名不分先后):blueken; brucecham; cfanlife; DDU1222; LittlePineapple; MatildaJin; MAYDAY1993;...
摘要:有鑒于此,本文以未安裝工具軟件的計(jì)算機(jī)未激活的愛智設(shè)備為例,實(shí)戰(zhàn)解說零基礎(chǔ)小白的愛智開發(fā)過程。愛智設(shè)備斷開互聯(lián)網(wǎng)也可以運(yùn)行,但本文中的開發(fā)部署等功能無法操作。 【本...
閱讀 3679·2021-10-11 11:09
閱讀 1342·2021-09-24 10:35
閱讀 3431·2021-07-29 13:48
閱讀 464·2019-08-30 13:15
閱讀 2520·2019-08-30 12:53
閱讀 3204·2019-08-30 12:44
閱讀 2717·2019-08-29 16:57
閱讀 962·2019-08-29 12:26