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.
Qué recibes: 1 archivo · 52.3 KB · ZIP
Ver opciones de compraDescripció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
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.
Getly abrió los archivos subidos y no encontró nada que impida abrirlos. No es un análisis antivirus ni una valoración de calidad.
Etiquetas
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



