搜尋
首頁web前端js教程防止對 JavaScript 生態系統的供應鏈攻擊

Preventing supply-chain attacks to the JavaScript ecosystem

供應鏈攻擊是 JavaScript 生態系統的大問題。在這篇短文中,我將概述一個簡單的安全措施,可以由所有 JavaScript 運行時(瀏覽器內和瀏覽器外)實現。這將防止當今困擾 JavaScript 生態系統的大多數供應鏈攻擊。

問題:權限繼承

這是最近發生的網站被駭客攻擊的事件:

  • 研究人員將 Polyfill 供應鏈攻擊與龐大的模仿賭博網站網路連結起來

問題的核心是JavaScript 模組繼承了呼叫它們的應用程式或模組的權限。這對於瀏覽器內運行時和瀏覽器外運行時都是一個問題。

應用程式所依賴的模組版本可能會在應用程式作者不知情的情況下發生更改,這一事實使問題變得更加複雜。因此,即使所有依賴的程式碼都已經被徹底審查(這本身就是一個巨大的努力),如果依賴版本沒有被鎖定,這個努力就會被浪費。

為什麼不鎖定版本並使用基於 semver 的依賴項?嗯,這主要是因為如果模組發布者發布了錯誤修復,那麼最好使用修復的程式碼。這也是 esm.sh 等 JavaScript CDN 支援 semvers 的重要原因之一。

?網站如何受到影響

網頁瀏覽器是沙盒執行環境,因此網站匯入的第三方 JavaScript 模組 (3JM) 不會對最終使用者的裝置造成任何損害。

儘管如此,3JM 可以在未經網站同意的情況下使用設備的計算資源並發出網路請求進行比特幣挖礦等。

?脫離瀏覽器的 JavaScript 應用程式會受到怎樣的影響

某些瀏覽器外執行時間(例如 Deno)確實實作了限制 JavaScript/TypeScript 應用程式權限的措施。但由於以下原因,這些措施還不夠:

  • 即使強制執行諸如 Deno 之類的權限系統,它們仍然允許 JS 模組不受限制地繼承呼叫者的權限。這意味著,如果應用程式具有完全寫入權限,則不應存取計算資源以外的任何資源的電子郵件地址驗證器可以在作業系統使用者不知情的情況下刪除使用者檔案。
  • 應用程式通常以作業系統使用者的完全權限運作。例如,對於在 MDRB 等工具下執行的程式碼,目前無法限制正在執行的程式碼的權限。

目前的解決方案

目前,安全團隊已經建立了自動化流程,用於尋找在 NPM 等知名註冊表上發布的模組中的漏洞。這種安全措施有幾個缺點:

  • 掃描已發布的所有已知模組的所有版本都非常耗費資源。
  • 無法保證所有可用的模組都已掃描。

?解決方案:每個模組的權限

為了解決這些問題,我提出了一個新的每模組權限系統,該系統向後相容於 JS/TS 應用程式目前的工作方式。

這涉及一個新的可選權限配置,每個應用程式和模組都可以在其deno.json / deno.jsonc / package.json 文件中聲明。權限有 2 部分:

  • requests.self — 這是應用程式或模組聲明它及其依賴項所需的權限的地方。
  • requests.imports — 這是應用程式或模組聲明其同意分配給其依賴項的權限的地方。這是每個依賴項允許需要的權限的超集。

以下是 JS/TS 運作時如何使用權限:

  • 當應用程式或模組導入模組M時,運行時會檢查M的permissions.self是否在導入器對M 。如果不是這種情況,導入會拋出錯誤(例如 PermissionError)。
  • 當模組或應用程式嘗試執行不允許執行的操作時,也會引發執行時間錯誤(例如 PermissionError)。可以捕獲並處理此運行時錯誤,而無需中止應用程式。
權限的值將是這樣的:


與目前的解決方案相比,我提出的解決方案有幾個優點:

  • 輕量級 — 發布的模組不需要掃描。
  • 徹底 — 權限是在運行時強制執行的,因此如果使用正確的 JS/TS 引擎,那麼即使是未知的模組也不會被漏掉。

這看起來非常簡單。 JS/TS 語言無需修改。如果沒有權限配置,那麼我們會回到目前的情況,即應用程式及其依賴關係圖都具有命令列參數提供的權限 ∎

以上是防止對 JavaScript 生態系統的供應鏈攻擊的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在JavaScript中替換字符串字符在JavaScript中替換字符串字符Mar 11, 2025 am 12:07 AM

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

自定義Google搜索API設置教程自定義Google搜索API設置教程Mar 04, 2025 am 01:06 AM

本教程向您展示瞭如何將自定義的Google搜索API集成到您的博客或網站中,提供了比標準WordPress主題搜索功能更精緻的搜索體驗。 令人驚訝的是簡單!您將能夠將搜索限制為Y

構建您自己的Ajax Web應用程序構建您自己的Ajax Web應用程序Mar 09, 2025 am 12:11 AM

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

示例顏色json文件示例顏色json文件Mar 03, 2025 am 12:35 AM

本文系列在2017年中期進行了最新信息和新示例。 在此JSON示例中,我們將研究如何使用JSON格式將簡單值存儲在文件中。 使用鍵值對符號,我們可以存儲任何類型的

10個jQuery語法熒光筆10個jQuery語法熒光筆Mar 02, 2025 am 12:32 AM

增強您的代碼演示文稿:10個語法熒光筆針對開發人員在您的網站或博客上共享代碼段的開發人員是開發人員的常見實踐。 選擇合適的語法熒光筆可以顯著提高可讀性和視覺吸引力。 t

8令人驚嘆的jQuery頁面佈局插件8令人驚嘆的jQuery頁面佈局插件Mar 06, 2025 am 12:48 AM

利用輕鬆的網頁佈局:8 ESTISSEL插件jQuery大大簡化了網頁佈局。 本文重點介紹了簡化該過程的八個功能強大的JQuery插件,對於手動網站創建特別有用

10 JavaScript和JQuery MVC教程10 JavaScript和JQuery MVC教程Mar 02, 2025 am 01:16 AM

本文介紹了關於JavaScript和JQuery模型視圖控制器(MVC)框架的10多個教程的精選選擇,非常適合在新的一年中提高您的網絡開發技能。 這些教程涵蓋了來自Foundatio的一系列主題

什麼是這個'在JavaScript?什麼是這個'在JavaScript?Mar 04, 2025 am 01:15 AM

核心要點 JavaScript 中的 this 通常指代“擁有”該方法的對象,但具體取決於函數的調用方式。 沒有當前對象時,this 指代全局對象。在 Web 瀏覽器中,它由 window 表示。 調用函數時,this 保持全局對象;但調用對象構造函數或其任何方法時,this 指代對象的實例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。這些方法使用給定的 this 值和參數調用函數。 JavaScript 是一門優秀的編程語言。幾年前,這句話可

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中