微信小程序上線已經有很長一段時間了,而開發者在接入小程序的過程中,會遇到一些問題,例如小程序要求必須通過HTTPS完成服務端通信,開發者需搭建HTTPS服務,進行 SSL 證書申請、部署,完成HTTPS服務搭建。
不僅僅是小程序,蘋果 iOS 平臺,Google,Android 在今年也逐步強制要求開發者使用 HTTPS 接入。HTTPS 似乎是一個繞不開的“劫”,讓不少開發者費心不已。
為什么開發者繞不開“HTTPS”
如果要繞開HTTPS那么就一定要說說HTTP協議,HTTP 協議是一個非常簡單和高效的協議,互聯網大部分的應用默認都是使用的HTTP。由于性能和上個世紀 90 年代使用環境的限制,HTTP 協議本身并不是一個為了安全設計的協議,既沒有身份認證,也沒有一致性檢驗,最不符合現在安全要求的是HTTP所有的內容都是明文傳輸的。
另一方面,互聯網是一個發展快速的行業,各類的應用已經滲透到人們的生活中,不管是游戲、金融、購物、社交還是用到最多的搜索,這些服務都能帶給人們極大的便捷,提升生活質量和效率。
但遺憾的是,大多通過HTTP服務的應用都隱藏著巨大的安全隱患,它不安全。這些安全隱患又集中表現在如下兩方面:
1、隱私泄露
由于HTTP本身是明文傳輸,用戶和服務端之間的傳輸內容都能被中間人查看。也就是說你在網上搜索、購物、訪問的網點、點擊的內容信息等,都可以被“中間人”獲取。由于國內對于隱私保護的重視度不高,而風險又比較隱性,造成的損失及后果也不太好評估。已知的一些比較嚴重的隱私泄露事件包括:
QQ登陸信息被不法分子竊取,然后在異地登陸,進行廣告宣傳和欺詐行為。
用戶手機號和身份信息泄露。用戶在頁面中的搜索行為泄露。比如搜索了一所醫院,很快就會有人打電話進行推廣(非效果廣告)。
2、頁面劫持
隱私泄露的風險不易發現,用戶感知度很低。但另外一類劫持的影響就非常明顯而直接了——頁面劫持,也就是直接篡改用戶的瀏覽頁面。有很多頁面劫持是非常簡單粗暴的,直接插入第三方廣告或者運營商的流量提示信息。
HTTPS 是解決劫持的核武器:HTTPS 為什么能很好的解決劫持呢?主要是三大武器:
1、身份認證—防假冒,防抵賴
每次建立一個全新的 HTTPS 連接時,都需要對身份進行認證,確保用戶訪問的是正確的目的網站。
2、內容加密—防竊聽
內容加密意味端對端的通信內容全都是密文,中間人不能直接查看到內容,HTTPS所有的應用層內容都是通過對稱加密來實現加密和解密的。
3、一致性校驗—防篡改
通過對數據和共享密鑰的MAC碼來防止中間人篡改內容,確保數據的完整性和一致性。
通過以上介紹,相信開發者明白了為什么微信小程序,蘋果 iOS 平臺,Google, Android都希望大家部署SSL證書,這個開發者繞不開的“劫”并不是真正的劫,而是信息安全傳輸的加密者保護者,是個不能繞開的,“保護者”在互聯網中擔任著非常重要的角色使信息不被泄露,篡改,竊聽及劫持。