<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 第2章.安全、原生功能和你的責任 --- [TOC] 作為 Web 開發者,我們通常喜歡瀏覽器強大的安全網絡 —— 我們寫的代碼的風險相對較小。我們的網站在沙盒中被授予有限的能力,并且相信我們的用戶喜歡使用一個大團隊的工程師們構建的瀏覽器,可以快速的響應最新發現的安全威脅。 當使用 Electron 進行工作,重要的是要理解 Electron 并不是一個 Web 瀏覽器。它使你可以使用熟悉的 Web 技術構建具有豐富功能的桌面應用,但是你的代碼也就有了更大的權力。JavaScript 可以訪問文件系統、用戶 shell 以及更多。這使你可以構建高品質的原生應用,但是固有的安全風險也被授予給你的代碼的額外能力所放大。 考慮到這一點,要謹慎顯示從不可信來源的任何內容構成的、但是 Electron 并沒有打算處理的嚴重安全風險。事實上 ,最受歡迎的 Electron 應用(Atom、Slack、Visual Studio Code 等)主要顯示本地內容(或可信的、安全的遠程內容,不集成 Node)—— 如果你的應用從一個在線資源執行代碼,確保沒有惡意代碼是你的責任。 ## Chromium 的安全問題及升級 雖然 Electron 盡可能的努力支持新版本的 Chromium,開發者也應該意識到升級是一個重大任務 —— 涉及到手工編輯幾十乃至上百個文件。考慮到現有的資源和貢獻,Electron 通常不會使用最新的 Chromium 版本,也許會落后幾天或幾周。 我們認為升級 Chromium 組件的當前的系統,在我們可用的資源和大部分構建在框架之上的 應用的需求之間,采取一個平衡。我們肯定有興趣聽到來自在 Electron 上開發的用戶的特定用例。 ## 忽略以上建議 無論你從一個遠程目標接收代碼還是在本地執行,安全問題總是存在。作為一個例子,考慮一個遠程站點被顯示在一個瀏覽器窗口。如果一個攻擊者設法改變了上述內容(無論直接攻擊源代碼,還是位于你的應用和實際目標之間),他們都可以執行用戶機器上的原生代碼。 >[warning] 任何情況下,都不應該在啟用了 Node 繼承時載入和執行遠程代碼。相反,只用本地文件(和應用程序打包在一起的)執行 Node代碼。要顯示遠程內容,使用 webview 標簽,并確保禁用了 Node 集成。 ### 清單 這并不是刀槍不入的,但是至少,你應該嘗試以下: * 只顯示安全(https)內容。 * 在所有顯示遠程內容的渲染器中禁用 Node 集成 (使用 `webPreferences`)。 * 不要禁用 `webSecurity`。禁用它也將會禁用同源策略。 * 定義一個內容安全策略,并使用約束規則(即 script-src 'self',兩條規則,不執行內聯 JavaScript,只加載本地腳本和資源)。 * 重寫并禁用能使字符串像代碼那樣運行的 `eval` 。 * 不要把 allowDisplayingInsecureContent 設置為 true。 * 不要把 allowRunningInsecureContent 設置為 true。 * 不要啟用 experimentalFeatures 或 experimentalCanvasFeatures ,除非你知道自己在做什么。 * 不要使用 blinkFeatures,除非你知道自己在做什么。 * WebViews:設置 nodeintegration 為 false。 * WebViews:不要使用 disablewebsecurity。 * WebViews:不要使用 allowpopups * WebViews:不要在遠程 CSS/JS 使用 insertCSS 或 executeJavaScript。 在強調一次,這個列表僅僅是減少風險,但不能清除風險。如果你的目標是顯示一個網站,瀏覽器則是更安全的選擇。 ## 全局 Buffer Node 的 Buffer 類當前是作為一個全局的類可用,甚至在 `nodeIntegration` 設置為 false 的時候。你可以從你的應用中將它刪除,通過如下的 `preload` 腳本: ~~~ delete global.Buffer ~~~ 刪除它可能會破壞你在 preload 腳本和應用中用到的 Node 模塊,因為有很多庫都預期它是一個全局類而不是通過如下腳本直接引用: ~~~ const {Buffer} = require('buffer') ~~~ 全局的 Buffer 在 Electron 將來的主要版本中可能會被移除。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看