Saltar a contenido

04. Security Implementation & IPC Middleware

Fase: 06 — Diseño Técnico
Entregable: 04
Proyecto: NoteVault (PC, Mac, Android, iPhone)


1. Especificación del Blindaje IPC y Validación de Rutas

1.1. Preload Script Blindado (frontend/electron/preload.ts)

import { contextBridge, ipcRenderer } from "electron";

// Aislamiento estricto: solo se expone el método invoke() tipado
contextBridge.exposeInMainWorld("nv", {
  invoke: (method: string, args?: unknown) =>
    ipcRenderer.invoke("nv", method, args),
});

1.2. Middleware de Validación de Rutas (appState.resolve)

Toda llamada que reciba una ruta relativa (relPath) es interceptada por el método AppState.resolve(): 1. Rechazo de Tipos no Válidos: Si rel no es string, se lanza ApiError("Ruta inválida."). 2. Rechazo de Bytes Nulos: Si incluye \x00, se aborta la operación. 3. Bloqueo de Rutas Absolutas: Si inicia por / o tiene formato de unidad (C:), se lanza ApiError("Solo se aceptan rutas dentro del vault."). 4. Bloqueo de Escape: Si cualquier segmento contiene .., se lanza ApiError("Solo se aceptan rutas dentro del vault."). 5. Protección de Carpetas Internas: Se prohíbe el acceso a carpetas que comiencen por punto que no formen parte del contrato de .notevault/.


2. Marco Conceptual: Middleware de Validación de Seguridad

1. **Entidad principal e independiente.** 2. **Es la entidad líder del conjunto de datos:** posee un identificador global único que fija la regla de saneamiento de entrada (`security_filter_id`: `FILTER-PATH-CONFINEMENT-RESOLVE`) ejecutado antes de cada acceso a I/O. 3. **Existe por sí misma en la capa de API sin depender de los gestores de módulos**, y es la única responsable de garantizar que ninguna petición originada en el frontend pueda leer o escribir fuera de los límites de la bóveda. 4. **Punto de entrada y límite de consistencia:** Detiene cualquier intento de escalamiento de privilegios o *Path Traversal*.