服務(wù)器
什么是HTTPS混合內(nèi)容
我們可能會(huì)有這樣的經(jīng)驗(yàn),當(dāng)我們通過(guò)HTTPS訪問(wèn)一個(gè)網(wǎng)站的時(shí)候,突然有提示:“本頁(yè)面包含有不安全的內(nèi)容”。這個(gè)時(shí)候會(huì)詢(xún)問(wèn)是否顯示“不安全的內(nèi)容”,這個(gè)時(shí)候,就是遇到了有混合內(nèi)容的頁(yè)面了。
HTTPS下的頁(yè)面,幾乎很少是采用單一連接,HTML標(biāo)識(shí)、圖片、JS腳本以及其他頁(yè)面資源不僅是多個(gè)連接獲取到,甚至可能是來(lái)自完全不同的服務(wù)器和網(wǎng)站。為了確保一個(gè)頁(yè)面進(jìn)行了正確的加密,所有的頁(yè)面資源都通過(guò)HTTPS進(jìn)去獲取是必要的。但在實(shí)際情況中,全部資源都采用HTTPS卻不常見(jiàn),這就倒是了混合內(nèi)容(mixed content)安全問(wèn)題的產(chǎn)生。
產(chǎn)生混合內(nèi)容的原因
程序員某些程序員仍然基于HTTP下的編程習(xí)慣,導(dǎo)致代碼的不嚴(yán)謹(jǐn)。最常見(jiàn)的就是采用絕對(duì)路徑的方式,訪問(wèn)網(wǎng)站上的資源,在HTTP的模式下這種方式可能都是正確的,但一旦這些頁(yè)面要求改用HTTPS,這些元素就很可能是被通過(guò)HTTP調(diào)用,而產(chǎn)生錯(cuò)誤。
Mashup
隨著Mashup的發(fā)展,網(wǎng)站不再是自己提供全部?jī)?nèi)容,它們混合其他網(wǎng)站的內(nèi)容,而內(nèi)容的來(lái)源則被隱去。Mashup雖然對(duì)開(kāi)發(fā)者來(lái)說(shuō)非常有用,但也讓我們的HTTPS變得不可捉摸。
Mashup主要通過(guò)在頁(yè)面加載第三方的JavaScript代碼來(lái)實(shí)現(xiàn)的,在HTTPS加密的上下文中,經(jīng)常會(huì)出現(xiàn)第三方的內(nèi)容和服務(wù)不支持HTTPS加密,前幾年,百度和Goolge的很多服務(wù)業(yè)也都不支持HTTPS,最近2、3年,才開(kāi)始支持全網(wǎng)SSL,但有些小的服務(wù)商依然不能做到全部支持HTTPS。
CDN
CDN在全球建立大量的服務(wù)器,可以通過(guò)對(duì)用戶(hù)訪問(wèn)IP地址的判斷,選擇最優(yōu)的網(wǎng)絡(luò)訪問(wèn)位置,為用戶(hù)提供大量的(主要是靜態(tài))數(shù)據(jù)文件。通常CDN要支持用戶(hù)通過(guò)HTTPS訪問(wèn)內(nèi)容的成本比較高,因?yàn)镃DN通常使用Bdns的域名解析技術(shù),這會(huì)對(duì)一個(gè)網(wǎng)站在全球的各個(gè)不同的分發(fā)站點(diǎn)分配不同的主機(jī)名,所以我們經(jīng)常必須采用Wildcard通配符證書(shū),甚至Wildcard San證書(shū)來(lái)支持,同時(shí)因?yàn)镾NI的兼容性還不夠完善,每個(gè)分發(fā)點(diǎn)最好都具體自己獨(dú)立的IP地址,這也導(dǎo)致運(yùn)維的復(fù)雜性和成本的提高。
混合內(nèi)容的影響混合內(nèi)容的影響主要與沒(méi)有被加密的內(nèi)容性質(zhì)所決定,目前主要有兩種性質(zhì)的內(nèi)容:
混合被動(dòng)內(nèi)容(Mixed passive content),混合主動(dòng)內(nèi)容(Mixed active conttent)。前者也叫混合顯示(Mixed Display),它們是低風(fēng)險(xiǎn)的內(nèi)容,例如圖片; 后者也叫作混合腳本(Mixed Scripting),它們是高風(fēng)險(xiǎn)的內(nèi)容,常見(jiàn)的有JavaScript腳本。
混合主動(dòng)內(nèi)容是威脅的真正來(lái)源。一個(gè)不被加密的JavaScript文件的引用,可能會(huì)被主動(dòng)攻擊者劫持,并用來(lái)獲取對(duì)頁(yè)面的完全控制,已經(jīng)使用受害者的身份在網(wǎng)站上執(zhí)行任意的動(dòng)作。對(duì)于其他危險(xiǎn)的資源類(lèi)型也是如此,包括:HTML(框架)、CSS、FLASH和JAVA應(yīng)用程序等。
混合被動(dòng)內(nèi)容雖然不是那么的危險(xiǎn),但依然會(huì)破壞頁(yè)面的完整性。在某些情況下,攻擊者可以通過(guò)在圖片中插入信息來(lái)玩弄受害者,可能導(dǎo)致釣魚(yú)攻擊的發(fā)生。
瀏覽器的處理
Android瀏覽器
Android的瀏覽器對(duì)混合內(nèi)容沒(méi)有任何限制。
Chrome
Chrome從版本38開(kāi)始,會(huì)阻止所有的混合主動(dòng)內(nèi)容。
Firefox
Firefox很久以前就可以對(duì)混合內(nèi)容進(jìn)行檢測(cè)并發(fā)出警告,但一直到版本23以后,開(kāi)始對(duì)所有的混合主動(dòng)內(nèi)容進(jìn)行阻斷。
IE
IE從IE5(1999年)開(kāi)始就支持對(duì)混合內(nèi)容的檢測(cè),當(dāng)IE檢測(cè)到同一個(gè)頁(yè)面上存在加密和明文內(nèi)容的時(shí)候,它將提示用戶(hù)來(lái)決定如何處理。但一直到IE9以后,才開(kāi)始對(duì)混合主動(dòng)內(nèi)容進(jìn)行阻斷,同時(shí)開(kāi)始對(duì)混合的被動(dòng)內(nèi)容采取了默許的方式。
Safri
Safri目前不阻斷任何混合內(nèi)容,這是它與其他瀏覽器相比的一個(gè)很大的區(qū)別。
Images
CSS
Scripts
XHR
Websockets
Frames
Android Brower 4.4
Y
Y
Y
Y
Y
Y
Chrome 41
Y
N
N
N
N
N
Firefox 30
Y
N
N
N
N
N
IE 11
Y
N
N
N
N
N
Safari
Y
Y
Y
Y
Y
Y
查找混合內(nèi)容
查找網(wǎng)頁(yè)是否存在混合內(nèi)容,推薦使用Chrome的“開(kāi)發(fā)者工具”:
訪問(wèn)需要測(cè)試網(wǎng)頁(yè),然后打開(kāi),開(kāi)發(fā)者工具,選擇“Security”-Non-Secure Origin,就可以看到Mixed Content:
解決辦法
檢查代碼
新的網(wǎng)站開(kāi)發(fā),在搭建測(cè)試環(huán)境時(shí),建議直接在測(cè)試環(huán)境部署HTTPS,以確保網(wǎng)站在測(cè)試時(shí)就能及時(shí)發(fā)現(xiàn)混合內(nèi)容問(wèn)題,并及時(shí)糾正。
程序員在代碼開(kāi)發(fā)時(shí),可以采用以下方式:
本地的圖片和腳本通過(guò)HTTP顯示方式直接調(diào)用。可以檢索所有通過(guò)http://絕對(duì)路徑方式調(diào)用的元素,改用本地相對(duì)路徑。訪問(wèn)了一些外網(wǎng)的圖片和腳本。譬如某網(wǎng)站www.domain.com,將圖片放在另外一個(gè)站點(diǎn)img.domain.com,將腳本訪問(wèn)js.domain.com上,請(qǐng)?jiān)诿總€(gè)站點(diǎn)都部署HTTPS,然后將原先的http://的引用方式調(diào)整為//的引用方式。例如:原先的代碼 <img src=http://img.domain.com/image/1.jpg /> 修改為 <img src=//img.domain.com/image/1.jpg /> 。調(diào)整后,瀏覽器會(huì)自動(dòng)選擇http還是https來(lái)訪問(wèn)外網(wǎng)資源。如需要使用第三方系統(tǒng)提供的應(yīng)用服務(wù),請(qǐng)尋求支持HTTPS的服務(wù)商,目前百度和Google都已經(jīng)支持全網(wǎng)HTTPS,而且正規(guī)的應(yīng)用服務(wù)上,都會(huì)開(kāi)始支持HTTPS了。HTST
HTST是一種強(qiáng)制瀏覽器獲取安全資源的機(jī)制,即使在面對(duì)用戶(hù)錯(cuò)誤(譬如用戶(hù)用80端口訪問(wèn)到你的網(wǎng)站)以及實(shí)現(xiàn)錯(cuò)誤(網(wǎng)站開(kāi)發(fā)人員在HTTPS頁(yè)面上加了不安全的元素)也依然有效。這個(gè)特性有效的消除了混合內(nèi)容的問(wèn)題,但僅能在你能控制的域名下工作。
HTST要求通過(guò)301跳轉(zhuǎn)的方式,一下僅就IIS簡(jiǎn)要介紹一下:
首先在網(wǎng)站上配置1個(gè)HTTP的網(wǎng)站,和一個(gè)HTTPS的網(wǎng)站,選擇HTTP重定向:
狀態(tài)代碼設(shè)置為:永久(301)。重定向到相同域名的HTTPS站點(diǎn)上。
有關(guān)HTST的詳細(xì)使用,我們將另外發(fā)文介紹。
CSP
為了阻斷從第三方網(wǎng)站獲取到的不安全資源,可以使用安全內(nèi)容策略(Content Security Policy,CSP)。這個(gè)安全特性可以對(duì)不安全的資源進(jìn)行阻斷。它同時(shí)還有很多其他有用的特性來(lái)處理應(yīng)用層安全問(wèn)題。
當(dāng)前文章:HTTPS混合內(nèi)容解析附解決方法
網(wǎng)頁(yè)鏈接:http://www.rwnh.cn/article28/cgjpcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、微信公眾號(hào)、品牌網(wǎng)站設(shè)計(jì)、建站公司、云服務(wù)器、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)