如果您已經(jīng)熟悉數(shù)據(jù)泄露的概念,那么您可能也熟悉其后果。但是它背后的機制呢?更重要的是,你如何預防它?這是我們將在這篇博文中探討的兩個問題,以便您了解如何有效防止網(wǎng)站數(shù)據(jù)泄露。
為什么網(wǎng)站會泄露數(shù)據(jù)?
要回答這個問題,我們首先需要了解一般的現(xiàn)代網(wǎng)站是如何工作的。如果我們看一下最新的統(tǒng)計數(shù)據(jù),我們會發(fā)現(xiàn)平均網(wǎng)站上運行的所有腳本中大約有 70% 來自第三方。這意味著只有 30% 的網(wǎng)站代碼是由公司內部編寫和維護的。如果我們仔細研究這些第一方代碼,我們會發(fā)現(xiàn)它通常由 JavaScript 框架和庫組成,例如 React 和 Angular,它們本身是由第三方開發(fā)和維護的。
這數(shù)百個第三方代碼導致了一個復雜的供應鏈,為公司創(chuàng)造了一個巨大的安全盲點,攻擊者可能利用這些盲點來泄露數(shù)據(jù)。但攻擊者究竟如何才能做到這一點?
第三方腳本的一個關鍵是它們與所有第一方代碼具有相同的功能。他們可以訪問任何類型的數(shù)據(jù),篡改您現(xiàn)有的代碼,甚至篡改您的用戶與您網(wǎng)站的交互方式。因此,網(wǎng)絡供應鏈的問題。
網(wǎng)絡供應鏈和數(shù)據(jù)泄露
從代碼庫到聊天機器人等第三方服務,當您將所有這些外部代碼加起來時,您很快就會發(fā)現(xiàn)您幾乎看不到您網(wǎng)站上實際運行的代碼。
出現(xiàn)主要問題是因為網(wǎng)站不斷處理非常敏感的信息,例如信用卡詳細信息、社會安全號碼和私人健康信息。因此,當用戶在任何給定網(wǎng)站上輸入和提交該數(shù)據(jù)時,它總是會通過混亂的客戶端。如果公司不了解他們正在運行的代碼,他們就無法確定是否有任何第三方腳本試圖攔截和泄露敏感數(shù)據(jù)。
如今,攻擊者正在利用這個安全盲點并發(fā)起 Web 供應鏈攻擊。這些攻擊越來越流行,因為如果攻擊者設法更改第三方腳本,他們基本上可以將任意代碼注入網(wǎng)站并為所欲為。另外,該代碼將影響該網(wǎng)站上的所有用戶以及使用該腳本的所有其他網(wǎng)站。
Web 供應鏈攻擊也很流行,因為攻擊者不必直接針對主網(wǎng)站。他們可以追蹤其最薄弱的環(huán)節(jié)——頁面中使用的第三方供應商——并利用他們可能擁有更少的安全資源這一事實。
如何保護網(wǎng)絡供應鏈,防止數(shù)據(jù)泄露?
防止數(shù)據(jù)泄漏的第一步是了解客戶端實際發(fā)生的情況。因此,這意味著您需要實時監(jiān)控每個單獨的腳本并了解其特定行為。這里的一個重要方面是能夠知道某個腳本是否以及何時發(fā)送數(shù)據(jù)、特定類型的數(shù)據(jù)以及數(shù)據(jù)發(fā)送到何處。沒有這些信息,您就無法知道某個網(wǎng)絡連接是否合法或是否有人企圖泄露您的用戶數(shù)據(jù)。
但可見性只是解決方案的一部分。一種預防數(shù)據(jù)泄漏的方法需要控制網(wǎng)站腳本的所有不同行為,并能夠默認限制它們。雖然使用內容安全策略等方法似乎可以解決這個問題,但實際上它們不足以有效解決數(shù)據(jù)泄露問題。其他方法,如 Web 應用程序防火墻甚至瀏覽器防御,也達不到要求。
為這個問題找到正確的解決方案需要一種深入的安全方法來提供可見性和控制。要獲得可見性,第一步是盤點您網(wǎng)站上運行的所有腳本以及它們正在執(zhí)行的所有網(wǎng)絡連接。這樣可以清楚地了解您的客戶端是如何構建的,您面臨的 Web 供應鏈風險是什么,以及您的用戶數(shù)據(jù)是如何流經(jīng)您的客戶端的。