Electron Desktop App Development · Lekcja

Sandboxing procesu renderera

Włącz i skonfiguruj sandboxing dla procesów rendererów, aby ograniczyć ich dostęp do zasobów systemowych i zwiększyć bezpieczeństwo aplikacji.

Lekcja 3 z 411 kroki

Sandboxing procesu renderera to bezpłatna lekcja Electron Desktop App Development na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Electron Desktop App Development, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Electron Desktop App Development zawiera 4 lekcji w sumie.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

What is Sandboxing?

Imagine your computer as a house. Some guests (apps) you trust completely, others you want to keep in a specific room with limited access.

Sandboxing is like putting your app's renderer process in a secure, isolated "room." It limits what that part of your app can do and access on your system.

This is crucial for security, especially when displaying untrusted web content or protecting against malicious scripts.

Why Sandboxing Matters

Electron apps combine web content (HTML, CSS, JS) with native desktop capabilities. Without proper isolation, a vulnerability in your web content could be exploited to access your user's file system or other system resources.

Sandboxing prevents this by isolating the renderer process, making it much harder for malicious code to "break out" and harm the user's system.

Chromium's Security Layer

Electron uses Chromium, the same engine that powers Google Chrome. A key security feature of Chromium is its renderer sandbox.

By default in browsers, web pages run in a sandboxed renderer process, meaning they can't directly interact with your operating system. Electron extends this robust security model to your desktop applications.

Activating the Sandbox

Enabling sandboxing in Electron is straightforward. You do it when creating a new BrowserWindow by setting the sandbox option to true in webPreferences.

This is a critical step for enhancing the security posture of your Electron application.

const { app, BrowserWindow } = require('electron');

function createWindow () {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      sandbox: true // Set to true to enable sandboxing
    }
  });
  win.loadFile('index.html'); // Loads your web content
}

app.whenReady().then(createWindow);

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit();
});

Renderer Process Limitations

When a renderer process is sandboxed, it faces significant restrictions:

  • It cannot directly access Node.js APIs (e.g., require, process, fs).
  • It cannot use native modules.
  • Its access to system resources (like files) is severely limited.

This isolation prevents web content from performing unauthorized actions on the user's computer.

Node.js Access Denied Demo

Let's see what happens when a sandboxed renderer tries to access Node.js directly. The code below creates a window with sandboxing enabled and attempts to use the fs module.

Run this example and check the developer console (usually F12 or Cmd+Option+I) for the error message.

const { app, BrowserWindow } = require('electron');

function createWindow () {
  const win = new BrowserWindow({
    width: 600,
    height: 400,
    webPreferences: {
      sandbox: true, // Sandboxing enabled
      nodeIntegration: false, // Explicitly disabled (default with sandbox)
      contextIsolation: true // Explicitly enabled (default with sandbox)
    }
  });

  // Load HTML that tries to use Node.js 'fs' module
  win.loadURL(`data:text/html;charset=utf-8,
        <!DOCTYPE html>
        <html>
        <head>
            <title>Sandboxed Demo</title>
        </head>
        <body>
            <h1>Sandboxed Renderer Test</h1>
            <p id="message">Attempting to access Node.js...</p>
            <script>
                try {
                    const fs = require('fs'); // This will fail!
                    document.getElementById('message').innerText = 'Node.js fs module loaded!';
                } catch (error) {
                    document.getElementById('message').innerText = 'Error: ' + error.message;
                    console.error('Renderer error:', error);
                }
            </script>
        </body>
        </html>
      `);

  win.webContents.openDevTools(); // Open DevTools to see the error
}

app.whenReady().then(createWindow);

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit();
});

Secure Interaction: Preload

Since sandboxed renderers can't directly access Node.js, how do they perform system tasks?

You use preload scripts with context isolation. These scripts run before your web content, have Node.js access, and can securely expose a limited API to your sandboxed renderer via contextBridge.

This ensures that your main process controls exactly what functionality is exposed.

Sandbox & Context Isolation

It's important to note that when webPreferences.sandbox is true, both nodeIntegration will be false and contextIsolation will be true by default, regardless of what you explicitly set.

This combination provides the strongest security for your renderer processes.

Best Practices

  • Always enable sandboxing: It's a fundamental security measure.
  • Minimize exposed APIs: Only expose essential functionality via preload scripts.
  • Validate all inputs: Any data passed from a renderer to the main process should be validated.

These practices create a robust and secure Electron application.

Quick Check

Understanding sandboxing is key to building secure Electron applications.

Recap: Securing Your App

In this lesson, we explored sandboxing in Electron. We learned that it's a critical security feature that isolates your renderer processes, preventing them from directly accessing system resources or Node.js APIs.

By setting webPreferences.sandbox: true, you activate this powerful protection, ensuring a safer application. Remember to use preload scripts with context isolation for secure communication between your sandboxed renderer and the main process.

Bezpłatny start

Ucz się JavaScript dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
12
Lekcje
47

Często zadawane pytania

Czy lekcja „Sandboxing procesu renderera” jest bezpłatna?

Tak — pełny tekst „Sandboxing procesu renderera” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Electron Desktop App Development, przejdź na CoddyKit PRO. Kurs Electron Desktop App Development zawiera 4 lekcji w sumie.

Co nauczysz się w „Sandboxing procesu renderera”?

Włącz i skonfiguruj sandboxing dla procesów rendererów, aby ograniczyć ich dostęp do zasobów systemowych i zwiększyć bezpieczeństwo aplikacji. Ćwiczysz Electron Desktop App Development z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Electron Desktop App Development?

Nie wymagamy żadnego doświadczenia. Electron Desktop App Development w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Sandboxing procesu renderera”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Electron Desktop App Development?

Tak. Każda lekcja Electron Desktop App Development zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Bezpieczne wzorce IPC
  2. Izolacja kontekstu i skrypty preload
  3. Sandboxing procesu renderera
  4. Zabezpieczanie przed zagrożeniami zdalnych treści
← Powrót do Electron Desktop App Development