面對多種方式的網站劫持,搜索引擎劫持、網絡劫持、瀏覽器劫持、路由器劫持等常見的網站劫持我們應該如何應對?
雖然互聯網經過多年的發展,可是網站使用的底層協議仍是 HTTP,HTTP 作為一種明文傳播協議,所有的傳輸數據都是明文,我們都知道在通信中使用明文(不加密) 內容可能會被竊聽,同時網站存在被劫持的風險。
部分網站遭遇劫持主要由于非法服務器獲取了 Web 網站文件及文件夾的讀寫權限,針對這個問題,我們可以利用服務器的安全設置、提高網站程序的安全性,以此防范 Web 劫持。
提升網站 防 SQL注入功能
SQL注入通過利用 SQL 語言的特性,向 Web 數據庫寫入內容,獲取權限,因此我們需要針對MS SQL Server 數據庫中的小權限 sa 默認用戶,建立一個只能訪問本系統數據庫的專一用戶,并且為他配置最小權限。
配置 Web 站點文件夾及其操作權限
使用 Windows 系統中的超級管理員權限對 Web 站點文件和文件夾進行權限配置。將大部分人的權限配置為僅讀權限,黑客在沒有寫權限的情況下,很難將木馬程序植入,減少網站域名劫持的可能性。
定期清理 Web 網點中存在的可疑文件
不管黑客通過何種方式獲取權限,在事件管理器中都會顯示出異常情況,通過對異常事件和日期的分析,查看執行代碼文件中是否被人注入代碼或改動,并且對新增可執行代碼進行清理。
讓用戶繞過運營商 local DNS,使用 114 DNS(國內最大的中立緩存 DNS),這種在技術實現上有比較大的難度,成本也比較高。在現在的情況下即使用戶使用公共 DNS,也并不能完全解決問題。先不論公共 DNS 是否也有在做劫持,最關鍵的是,運營商也會專門針對到公共 DNS 的流量做劫持。對于流量入口的把控,運營商不會放松警惕。
在移動客戶端中加入一個域名解析模塊,客戶端通過 HTTP 的方式向網站的流量調度服務器請求 IP,流量調度服務器會根據用戶所在位置給用戶一個最優的IP。客戶端在獲取IP后直接用此IP來訪問所需站點資源。
網站使用 HttpDNS 面臨較高的成本,我們可以選擇國內公有云廠商云的HttpDNS 調度功能,可以有效防止 DNS 劫持。
△ HttpDNS 訪問原理圖
四、HTTPS 防劫持
由于公共 DNS、HttpDNS 的部署成本過高,有一定的技術難度,并且在面對無孔不入的 DNS 劫持時難免會力有不逮。這時候網站開啟 HTTPS 作為防 DNS 劫持手段之一可以高效的解決這些問題。目前絕大部分網站也都已經啟用 HTTPS 來加密。HTTPS 協議就是HTTP+SSL/TLS,在 HTTP 的基礎上加入 SSL /TLS 層,提供了內容加密、身份認證和數據完整性三大功能,最終目的就是為了加密數據,用于安全的數據傳輸。
△ HTTP 請求
△ HTTPS 請求
SSL 協議在 HTTP 請求中增加了握手階段,并且對明文 HTTP 請求、應答進行加密。SSL 握手階段,客戶端瀏覽器會進行服務器身份認證,確認客戶端證書證書屬于該目標網站并且證書本書有效的時候,并且通信雙方還會共同使用一個加密和解密的會話密鑰。
在 SSL 握手階段結束之后,服務端和客戶端通過會話密鑰對交互數據進行加密/解密操作,將HTTP請求和應答經過加密之后才會發送到發送到網絡上。
通過SSL協議對Web服務器的身份認證,使 DNS劫持導致的連接錯誤服務器情況被發現和終止,保證DNS劫持無法實現。同時HTTPS在數據傳輸中對數據進行加密傳輸,保護數據不被竊取以及修改。
面對 Web 流量劫持,首先我們可以在網站層面限制讀寫權限,限制惡意代碼的寫入,其次可以通過公有 DNS 和 HttpDNS 來防止惡意 DNS 劫持。全站開啟 HTTPS,加密數據傳輸,可以有效防止數據泄漏,同時解決 DNS 劫持的問題。