一道關於https進行登入驗證的前端面試題

來源:互聯網
上載者:User

問題:

假設目前網站的登入實現是,在http協議下,使用XHR方式調用http協議下的後端介面實現登入。現需求變更如下:
為了提高網站登入的安全性,登入介面要修改為ssl加密方式,請簡述修改會帶來的問題並出實現方案(要求:實現方案需相容所有主流瀏覽器)。

補充說明: 請從瀏覽器的同源策略及HTTP安全形度作答。

答案:

既然是前端面試題,答案的範圍自然就限定在了前端領域。

瀏覽器的同源策略要求當前域和被請求域的網域名稱、連接埠和協議必須相同,其中有一點不同就會認定為跨域,因此,題目的一方面其實是考察前端開發中比較經典的跨域問題,這裡是協議不同,屬於完全跨域。

前端開發中跨域問題的解決,想必各位同仁都有一定的瞭解,像JSONP、iframe跨子域、Window name傳輸、postMessage方法等等,當然不同的方案會有不同的適用情形。

在題目裡,需求的變更是為提高登入的安全性,由XHR的同域HTTP更換為SSL方式,即介面協議要換成HTTPS(它如何保證安全性,請自行Google),JSONP不具有安全性,首先排除掉。題目屬於完全跨域,跨子域的方案自然是行不通的,因此把關注點放在postMessage和window name跨域上面。

postMessage屬於瀏覽器的新特性,目前(IE8+、chrome、safari、
Firefox、Opera)等瀏覽器均已支援這一特性,可以用postMessage實現首頁面和iframe的通訊(完全跨域也是可以的),可以考慮使用postMessage在iframe和首頁面之間實現相互連信。具體實現:在介面伺服器(HTTPS)部署一個代理檔案proxy.htm,這個HTTPS協議的代理頁面就可以用XHR方式和同源的HTTPS協議的介面通訊了。至此,較先進的瀏覽器中的這個問題得到解決。

但是,目前國內IE6、IE7及相應核心的瀏覽器,依然佔據著很大的瀏覽器市場份額,對於這部分瀏覽器,考慮採用window name傳輸的方式,來實現首頁面和iframe的通訊了,具體window name的實現細節,在這裡就不再描述了,大家可以參考懌飛的博文《使用 window.name 解決跨域問題》http://www.planabc.net/2008/09/01/window_name_transport/,

首頁面和iframe之間的通訊能保證相對安全性,真正和伺服器之間的通訊是經過HTTPS加密過的,因此能在一定程度上保證了資訊安全。

至此,問題得到瞭解決,歡迎大家的任何意見和建議。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.