Saltar al contenido principal

Menú de comandos

Ve a una página o busca en el catálogo

Herramientas y scripts de IA

Revisión de seguridad para SvelteKit

Revisa apps de SvelteKit 2 y 3 antes de desplegar: secretos en variables PUBLIC_ o devueltos desde load, comprobaciones CSRF desactivadas, CORS que confía en cualquier origen, XSS con {@html}, redirecciones abiertas, cookies de sesión débiles y CSP con scripts en línea.

$5.00

Qué recibes: 1 archivo · 52.3 KB · ZIP

Ver opciones de compra

Descripción del producto

Una función load que devuelve { stripeKey: STRIPE_SECRET_KEY } envía tu clave secreta de Stripe a cada visitante dentro de los datos de la página, y csrf: { checkOrigin: false } permite a cualquier sitio web enviar tus formularios con las cookies de tus usuarios. Esta skill encuentra esos errores y otros nueve errores de SvelteKit antes de desplegar, y te dice cómo corregir cada uno.

Tu agente ejecuta un escáner sobre svelte.config.js, vite.config, componentes .svelte, archivos +page, +layout y +server, hooks, funciones remotas, src/env.ts y archivos .env. Conoce SvelteKit 2 y 3: lee la versión de @sveltejs/kit en package.json, sabe que redirect() en SvelteKit 3 rechaza las URL externas salvo que las permitas, que cookies.set() crea cookies httpOnly y secure por defecto, qué módulos son solo de servidor y que SvelteKit deja de añadir sus nonces de CSP cuando 'unsafe-inline' está en script-src. Sigue los datos de la URL, de formularios y de load a través de variables, $derived y bloques {#each}, omite comentarios y trata DOMPurify.sanitize() y llamadas similares como saneamiento. Nunca compila ni ejecuta la app. Devuelve BLOCK, REVIEW o NOT FLAGGED, con el archivo, la línea, el motivo y un enfoque más seguro. Los secretos nunca se muestran.

Qué comprueba

BLOCK (corregir antes de publicar)

  • K01: variables con nombres de secreto hechas públicas (secret, password, private key, service role, URL de base de datos, URL de webhook de chat, tokens de IA y de GitHub): nombres PUBLIC_ en archivos .env e importaciones de env públicas, nombres VITE_ en import.meta.env y public: true en src/env.ts
  • K02: csrf.checkOrigin: false o '*' en csrf.trustedOrigins, escrito ahí directamente o en un array constante
  • K03: CORS que copia el Origin de la petición en Access-Control-Allow-Origin junto con Allow-Credentials: true
  • K04: secretos enviados al navegador: valores privados de env que devuelven funciones load de servidor, acciones de formulario o funciones remotas (directamente o en un objeto local), claves secretas escritas en archivos .svelte, load universales o módulos de src/lib fuera de carpetas de servidor, y process.env copiado en el bundle mediante define de vite. Las claves de navegador como las publishable, anon, search-only y las de PostHog no se reportan
  • K05: {@html} con un valor procedente de la URL (parámetros de búsqueda, hash, parámetros de ruta), también cuando se asigna en $effect u onMount; no cuentan los valores que solo se comparan con la URL o se buscan a partir de ella

REVIEW (revisar antes del lanzamiento)

  • K11: {@html} con datos de load, resultados de formularios o props de componentes sin sanitizador
  • K12: redirecciones abiertas a valores de la query string o de formularios mediante redirect(), un encabezado Location o window.location, sin comprobar que sea el mismo origen (una prueba startsWith('/') por sí sola no basta)
  • K13: cookies de sesión o de autenticación con httpOnly o secure desactivados, sameSite none, creadas con serialize() o stringifySetCookie() del paquete cookie sin httpOnly, con un encabezado Set-Cookie sin procesar o con document.cookie
  • K14: 'unsafe-inline' o 'unsafe-eval' en script-src de la CSP (no se reportan las políticas report-only ni 'unsafe-inline' junto a 'strict-dynamic')
  • K15: el hook handleError del servidor, o un manejador que envuelve, devolviendo mensajes de error o trazas de pila
  • K16: Access-Control-Allow-Origin: * junto con Allow-Credentials: true

Qué incluye

  • El escáner (Python 3.9+, solo biblioteca estándar)
  • Una guía de reglas con el motivo, el enfoque más seguro y el enlace a la documentación oficial de cada regla
  • Un proyecto de ejemplo de SvelteKit arriesgado y otro seguro, y el informe real que el escáner genera sobre el arriesgado

Limitaciones

Lee cada archivo por separado: no sigue un valor pasado a través de una función de otro archivo, un secreto importado de un módulo compartido ni un sanitizador aplicado en otro componente. No lee un kit.env.publicPrefix personalizado (se asume PUBLIC_), y no comprueba la autorización dentro de funciones load y acciones, la validación de entrada de las funciones remotas ni los encabezados de seguridad definidos por un proxy o el hosting. Sin un package.json que incluya @sveltejs/kit, las redirecciones se evalúan con las reglas de SvelteKit 2. NOT FLAGGED no es una garantía.

Contenido

Un archivo ZIP con 28 archivos: SKILL.md, el escáner en scripts/ (5 archivos de Python), references/rules.md (cada regla con su motivo y un enfoque más seguro) y examples/ (20 archivos de ejemplo más report.md, la salida real del escáner sobre el ejemplo arriesgado).

Cómo usarlo: es una skill de agente: una carpeta con un archivo SKILL.md y scripts de Python que puede ejecutar un agente de programación con IA como Claude Code, Cursor o Codex CLI. Descomprímela en la carpeta de skills de tu agente (para Claude Code: ~/.claude/skills/) y luego pide a tu agente que revise tu proyecto. Los scripts también funcionan por sí solos con Python 3.9 o posterior, sin instalar nada. Solo leen tus archivos: sin acceso a la red y sin enviar nada a ninguna parte.

Qué recibes

1 archivo · 52.3 KB

  • sveltekit-safety-check-1.0.0.zipZIP · 52.3 KB
LicenciaUso comercial permitido
Revisión del paqueteSuperada

Getly abrió los archivos subidos y no encontró nada que impida abrirlos. No es un análisis antivirus ni una valoración de calidad.

Publicado12 nov 2026
Tamaño del archivo52.3 KB
Formato de archivoZIP
Versiónv1.0

Etiquetas

sveltekitsveltesecurityxsscsrfai agent skill
R
RR HH

Preguntas frecuentes

¿Tengo acceso al instante?

Sí. Es un producto digital: puedes descargarlo justo después del pago, directamente desde tu biblioteca.

¿Puedo usarlo en proyectos comerciales?

Sí. Se permite el uso comercial: úsalo en tu propio negocio y en cosas que vendas. No puedes revender ni redistribuir el archivo en sí.

¿Cuál es vuestra política de reembolso?

Puedes pedir un reembolso dentro de 30 días. Si algo no va bien, solicítalo desde tu pedido y el equipo de Getly lo revisa.

¿Qué formatos y tamaños de archivo recibiré?

Descargarás 1 archivo - ZIP - 52.3 KB en total.

¿Recibo actualizaciones gratis?

Sí: cuando el vendedor publica una versión nueva, puedes volver a descargar los archivos más recientes desde tu biblioteca sin coste extra. Mira el registro de cambios para ver las últimas actualizaciones.

Precio

$5.00