Seguridad
ns-frame está pensado para sitios con contenido de usuarios y políticas de seguridad estrictas.
- Sin inyección. Todo el SVG se construye con
createElementNS,setAttributey CSSOM; no hayinnerHTMLcon valores dinámicos. Ningún valor de atributo ni de CSS puede convertirse en HTML ni en un script. Los toasts insertan mensaje y título como texto. - CSP estricta. Funciona con
default-src 'self'; script-src 'self'; style-src 'self', sin'unsafe-inline'. Los estilos del runtime van en una constructable stylesheet, con respaldo a<style>con el nonce de<meta name="csp-nonce">. Las formas compiladas en el build (ns-frame/static) van en una hoja externa, no en estilos en línea. - Cascada predecible. Los estilos del runtime están en
@layer ns: tu CSS siempre gana. - Entradas validadas. Duraciones con una expresión estricta, selectores de
ns-linkentry/catch, números conparseFloat. Sineval, sin red y sin dependencias en el navegador. - Test automático.
packages/ns-frame/test/csp.htmlcarga todo con CSP estricta y atributos maliciosos (<image onerror>,<script>, en formas, animaciones, skeletons, carruseles y toasts) y cuenta violaciones y nodos inyectados: ambos deben ser 0.
Cadena de suministro
- Cero dependencias de runtime. Las de desarrollo (esbuild y terser) van con versión exacta y lockfile.
- El repositorio usa pnpm con una semana de espera para versiones nuevas y scripts de instalación bloqueados (
pnpm-workspace.yaml). - La CI fija cada GitHub Action a un commit (SHA), no a una etiqueta.
Reportar una vulnerabilidad
Mira SECURITY.md. Por favor, no abras un issue público para vulnerabilidades.