新聞中心
1.前言

創(chuàng)新互聯(lián)一直在為企業(yè)提供服務(wù),多年的磨煉,使我們在創(chuàng)意設(shè)計,網(wǎng)絡(luò)營銷推廣到技術(shù)研發(fā)擁有了開發(fā)經(jīng)驗。我們擅長傾聽企業(yè)需求,挖掘用戶對產(chǎn)品需求服務(wù)價值,為企業(yè)制作有用的創(chuàng)意設(shè)計體驗。核心團隊擁有超過十多年以上行業(yè)經(jīng)驗,涵蓋創(chuàng)意,策化,開發(fā)等專業(yè)領(lǐng)域,公司涉及領(lǐng)域有基礎(chǔ)互聯(lián)網(wǎng)服務(wù)四川聯(lián)通機房服務(wù)器托管、APP應(yīng)用開發(fā)、手機移動建站、網(wǎng)頁設(shè)計、網(wǎng)絡(luò)整合營銷。
上次我說過,我們?yōu)g覽器的主要工作就是把HTML,JavaScript,CSS等文件從服務(wù)器端取下來,然后解析、渲染,展示成美奐美倫的頁面呈現(xiàn)給人類。
我們還替人類保護一個叫做Cookie的小東西,網(wǎng)站會把Cookie發(fā)送給瀏覽器讓我們保存起來,等到訪問同一個網(wǎng)站的時候,我們再把他發(fā)過去。
這個Cookie用來證明某個用戶已經(jīng)和服務(wù)器交互過,更重要的是證明已經(jīng)登錄過系統(tǒng),不用再次登錄了。
JavaScript這小子在我們這里承擔了越來越重要的職責,從對DOM樹的改動,到利用AJAX訪問服務(wù)器端,他可以說是風(fēng)光無限。
(詳情參見上一篇文章《瀏覽器:一個家族的奮斗》)
可是我們都忽視了一個重要的問題:安全,這個東西差點讓我們家族遭受滅頂之災(zāi)。
2.Cookie失竊
有一天,我的主人登錄了"愛存不存"銀行(www.icbc.com),這個銀行網(wǎng)站給我發(fā)了一個Cookie,證明主人登錄過了, 主人在“愛存不存”銀行網(wǎng)站做了一些操作,但是忘記了退出,然后開了一個新的Tab頁訪問了一個叫做www.beauty.com ,我知道這個網(wǎng)站不懷好意,拼命地提醒主人,但是他仍然經(jīng)不住網(wǎng)站上那些圖片的誘惑,執(zhí)意把這個網(wǎng)站打開。
我沒有辦法,只好下載這個不懷好意網(wǎng)站的HTML,JavaScript,CSS, 讓我沒有想到的是這里的JavaScript竟然想訪問“愛存不存”銀行的Cookie。
“這個Cookie是愛存不存銀行給我的,不屬于www.beauty.com,你為啥要訪問?” 我問他。
“沒事,我好奇,想看看別的網(wǎng)站的Cookie長什么樣” 他輕松地回答。
我將信將疑地把Cookie給了他,他不知道做了什么花樣,似乎是往www.beauty.com發(fā)了一個請求,然后就把Cookie還給了我。
很快我的主人就發(fā)現(xiàn),他在“愛存不存”銀行的私房錢不翼而飛了。
FireFox嘲笑我說:“你這個家伙啊,怎么能夠把Cookie這么重要的東西隨隨便便地給別人呢? ‘愛存不存’銀行的Cookie被黑客偷走了,那些黑客不用登錄就可以冒充用戶在‘愛存不存’網(wǎng)站做操作了。”
“?。?有這么嚴重? 可他是JavaScript,照理說可以訪問?。俊?/p>
“唉,你要知道,這個JavaScript和那個Cookie不是同一個網(wǎng)站的,怎么能訪問呢?!?/p>
由于這件事,主人再我不理我了,從此開始寵幸FireFox。
3.密碼失竊
FireFox也沒得意很久,他也很快中了招。
這一次,主人還是忍不住去www.beauty.com看圖片,F(xiàn)ireFox這次很小心,不把任何別的網(wǎng)站的Cookie發(fā)給這里的JavaScript。
但這一次beauty.com改變了策略,它用iframe的方式放置了一個淘寶的登錄網(wǎng)頁到beauty.com頁面中,淘寶恰恰是主人最喜歡的,主人一看,不錯啊,還有快捷登錄方式,于是主人就輸入了自己真實的用戶名和密碼,沒想到Beauty.com的JavaScript 已經(jīng)把這個淘寶登錄Form的action指向了自家網(wǎng)站,等到主人點了登錄按鈕以后, 用戶名和明文的密碼就這樣被竊取了。
于是FireFox也被打入冷宮。
4.家族會議
黑客猖獗,類似的安全事故不斷出現(xiàn),我們家族的成員紛紛中招,家族趕緊召集會議,商量對策,防止人類把我們家族給廢掉。
我和FireFox在會議上聲討現(xiàn)在的人類實在是喜歡訪問那些不良網(wǎng)站,族長Mozilla說沒辦法這是人類的本性,無論如何也無法改變,如果改了就不是人類了。
“雖然我們控制不了人類的行為,但是我們?yōu)g覽器家族可以做點改變,增加安全性!” Mozilla族長充滿正義感和使命感,他下達了一個命令:“以后我們家族確定一條鐵規(guī):除非兩個網(wǎng)頁是來自于統(tǒng)一‘源頭’, 否則不允許一個網(wǎng)頁的JavaScript訪問另外一個網(wǎng)頁的內(nèi)容,像Cookie,DOM,LocalStorage統(tǒng)統(tǒng)禁止訪問!”
我仔細咂摸這句話的含義,其實是說各個網(wǎng)頁如果不同源的,就被隔離了,只能在自己的一畝三分地中折騰。
“什么叫同一個源頭?” FireFox問道。
“就是說{protocol,host,port} 這三個東西必須得一樣! 我給你們舉個例子, 例如有這么一個網(wǎng)頁: http://www.store.com/product/page.html, 下面的表格列出了各種不同情況。”
這個同源策略確實嚴格, 不同源的網(wǎng)頁無法訪問另外一個網(wǎng)頁的DOM,Cookie, 像beauty.com那樣的惡意網(wǎng)站想偷走Cookie/密碼就不容易了。
我想到了主人之前購物經(jīng)常訪問的http://www.store.com/, 這個頁面中有一段裝載jquery.js的代碼:
這個jquery.js是來自于不同的源(static.store.com), 難道他就沒法操作www.store.com頁面的內(nèi)容了嗎? 如果不能操作,這個jquery.js就沒有任何用處啦!
我把這個困惑給大家說了下, FireFox馬上附和: “沒錯,難道我們要強制人類把所有的JavaScript代碼放到www.store.com下嗎? 人類肯定不能容忍! ”
“嗯,這是個好問題” Mozilla族長說,“這樣,我給你們開個口子,對于使用


咨詢
建站咨詢