1. 程式人生 > >Web如何應對流量劫持?

Web如何應對流量劫持?

雖然網際網路經過多年的發展,可是網站使用的底層協議仍是 HTTP,HTTP 作為一種明文傳播協議,所有的傳輸資料都是明文,我們都知道在通訊中使用明文(不加密) 內容可能會被竊聽,同時網站存在被劫持的風險。

網站劫持檢測


1、檢測網站是否被劫持
2、域名是否被牆
3、DNS汙染檢測
4、網站開啟速度檢測
5、網站是否被黑、被入侵、被改標題、被掛黑鏈

【深度檢測】
1、可以檢測多層js劫持、圖片劫持、FLASH劫持、地區電信劫持、DNS劫持、域名被牆、DNS汙染
2、可以獲取嚴重佔用載入時間的JS或者圖片、css等html所用檔案
3、不支援搜尋引擎快照劫持檢測
最長等待時間為10分鐘。 此項選擇考慮方向為:各大電信商連結檢測網站速度有快慢。

 

限制網站許可權

部分網站遭遇劫持主要由於非法伺服器獲取了 Web 網站檔案及資料夾的讀寫許可權,針對這個問題,我們可以利用伺服器的安全設定、提高網站程式的安全性,以此防範 Web 劫持。

提升網站 防 SQL 注入功能
SQL 注入通過利用 SQL 語言的特性,向 Web 資料庫寫入內容,獲取許可權,因此我們需要針對MS SQL Server 資料庫中的小許可權 sa 預設使用者,建立一個只能訪問本系統資料庫的專一使用者,並且為他配置最小許可權。

配置 Web 站點資料夾及其操作許可權
使用 Windows 系統中的超級管理員許可權對 Web 站點檔案和資料夾進行許可權配置。將大部分人的許可權配置為僅讀許可權,黑客在沒有寫許可權的情況下,很難將木馬程式植入,減少網站域名劫持的可能性。

定期清理 Web 網點中存在的可疑檔案
不管黑客通過何種方式獲取許可權,在事件管理器中都會顯示出異常情況,通過對異常事件和日期的分析,檢視執行程式碼檔案中是否被人注入程式碼或改動,並且對新增可執行程式碼進行清理。

使用公共114DNS

讓使用者繞過運營商 local DNS,使用 114 DNS(國內最大的中立快取 DNS),這種在技術實現上有比較大的難度,成本也比較高。在現在的情況下即使使用者使用公共 DNS,也並不能完全解決問題。先不論公共 DNS 是否也有在做劫持,最關鍵的是,運營商也會專門針對到公共 DNS 的流量做劫持。對於流量入口的把控,運營商不會放鬆警惕。
HttpDNS,防止 DNS 劫持


在移動客戶端中加入一個域名解析模組,客戶端通過 HTTP 的方式向網站的流量排程伺服器請求 IP,流量排程伺服器會根據使用者所在位置給使用者一個最優的IP。客戶端在獲取IP後直接用此IP來訪問所需站點資源。

網站自身使用 HttpDNS 面臨較高的成本,而通過又拍雲提供的 HttpDNS 排程功能,可以最低成本的方式,有效防止 DNS 劫持。


△ HttpDNS 訪問原理圖
HTTPS 防劫持
由於公共 DNS、HttpDNS 的部署成本過高,有一定的技術難度,並且在面對無孔不入的 DNS 劫持時難免會力有不逮。這時候網站開啟 HTTPS 作為防流量劫持手段之一可以高效的解決這些問題。目前絕大部分網站也都已經啟用 HTTPS 來加密。HTTPS 協議就是HTTP+SSL/TLS,在 HTTP 的基礎上加入 SSL /TLS 層,提供了內容加密、身份認證和資料完整性三大功能,最終目的就是為了加密資料,用於安全的資料傳輸。


△ HTTP 請求



△ HTTPS 請求
SSL 協議在 HTTP 請求中增加了握手階段,並且對明文 HTTP 請求、應答進行加密。SSL 握手階段,客戶端瀏覽器會進行伺服器身份認證,確認客戶端證書證書屬於該目標網站並且證書本書有效的時候,並且通訊雙方還會共同使用一個加密和解密的會話金鑰。

在 SSL 握手階段結束之後,服務端和客戶端通過會話金鑰對互動資料進行加密/解密操作,將 HTTP 請求和應答經過加密之後才會傳送到傳送到網路上。

通過 SSL 協議對 Web 伺服器的身份認證,使流量劫持導致的連線錯誤伺服器情況被發現和終止,保證劫持無法實現。同時 HTTPS 在資料傳輸中對資料進行加密傳輸,保護資料不被竊取以及修改。

伺服器遠端桌面連線

 

如何快速啟用 HTTPS
鑑於啟用 HTTPS 會帶來一定的伺服器資源消耗,目前大多數公司普遍的選擇是直接使用國內的 CDN 服務,比如又拍雲提供一站式 HTTPS 服務,簡單幾步就能完成全站 HTTPS 的部署,光是免費類證書就有2款,而付費證書在 3-5 天內即可完成申購。另外一種可以直接在 Web 伺服器上部署證書和私鑰,可以去網上檢視教程。

總結

面對 Web 流量劫持,首先我們可以在網站層面限制讀寫許可權,限制惡意程式碼的寫入,其次可以通過公有 DNS 和 HttpDNS 來防止惡意 DNS 劫持。全站開啟 HTTPS,加密資料傳輸,可以有效防止資料洩漏,同時解決流量劫持的問題。