NoSignups (FckSignups)
Opera una copia de NoSignups con fronteras claras de datos y envíos
Revisa enlaces, validación de catálogo y el Worker que escribe en GitHub sin confundir CORS o ausencia de registro con autorización.
Qué aprenderás
- Los atributos de enlaces no validan destinos.
- Los envíos necesitan controles además de CORS.
- Una URL analizable y un tipo estático no son validación completa.
Antes de empezar
- JavaScript y JSON básicos
- Una tarea inocua y un registro de muestra
Explica la frontera del capítulo y verifícala con la muestra o ficha propuesta.
Conclusiones clave
- Los atributos de enlaces no validan destinos.
- Los envíos necesitan controles además de CORS.
- Una URL analizable y un tipo estático no son validación completa.
Los registros cruzan una frontera de confianza
ToolCard abre tool.url y enlaza tool.github. Usa noopener y noreferrer en nuevas pestañas, limitando determinadas interacciones con la ventana de origen y el referente; esos atributos no certifican el destino ni hacen seguro su contenido. Un dominio cambiado o un registro comprometido puede dirigir a otro lugar. Revisa el destino real, no solo su nombre visible.
Una copia endurecida debería validar URLs HTTP o HTTPS admitidas, tipos, IDs únicos y referencias de categorías antes de renderizar registros remotos. Es un control propuesto, no demostrado en loadTools. Utiliza muestras inocuas para verificarlo. No subas archivos personales a una utilidad desconocida solo para comprobar la afirmación de que no exige cuenta.
Un formulario puede crear estado externo
El Worker inspeccionado dirige POST a manejadores de envíos, informes o sugerencias. handleSubmitTool valida campos, compone una incidencia y llama a GitHub con un token de servidor. Un directorio aparentemente de lectura puede incluir esa ruta de escritura. Revisa los destinos antes de activar formularios y prueba únicamente con servicios y repositorios bajo tu control.
corsHeaders elige un origen permitido para la respuesta, pero el router mostrado no rechaza por sí mismo un Origin no listado antes de llamar al manejador. Las cabeceras CORS no sustituyen autorización de servidor ni controles de abuso. Es revisión de archivos concretos, no una prueba de penetración ni una afirmación de que el despliegue público carezca de otras protecciones.
Limita contenido y credenciales por separado
El validador comprueba que las URLs puedan analizarse, pero eso no demuestra un esquema o dominio aprobado. Nombre y descripción se recortan a 100 y 500 caracteres; category se trata como cadena, sin verificar pertenencia al catálogo en este manejador. Esos detalles delimitan lo que se impone realmente y lo que debe revisarse antes de considerar una propuesta como entrada curada.
Guarda credenciales de escritura solo en el entorno secreto del Worker, limita permisos a la operación y repositorio necesarios y prepara rotación y seguimiento de abuso. Las descripciones recibidas siguen siendo datos no fiables para personas y agentes. El ejercicio es una lista defensiva, no una orden de contactar el endpoint público: no se enviaron formularios ni se crearon incidencias.
Pasos de implementación
- 1
Inventaría fuentes de catálogo y endpoints de formularios.
- 2
Valida registros antes de renderizarlos o aceptarlos.
- 3
Mantén credenciales de escritura fuera del frontend.
- 4
Prueba con muestras en servicios y repositorios propios.
Ejemplo para copiar
Lectura: fuente -> registros validados -> enlaces externos
Escritura: formulario revisado -> Worker controlado -> repositorio propio
Secretos: solo entorno Worker, nunca JavaScript del navegador
Pruebas: muestras inocuas, sin envíos públicosPreguntas frecuentes
¿La lista de orígenes autentica al remitente?
No. CORS del navegador y autorización del servidor resuelven problemas distintos. Revisa controles de petición y protecciones de despliegue.
¿Se probaron los endpoints públicos?
No. Las conclusiones proceden del código inspeccionado; no se envió ningún formulario ni se creó ninguna incidencia.
Fuentes
- README.mdFuente verificada 2026-09-07
- package.jsonFuente verificada 2026-09-07
- vite.config.mtsFuente verificada 2026-09-07
- src/hooks/useTools.tsFuente verificada 2026-09-07
- src/components/Home/Tools/Tools.tsxFuente verificada 2026-09-07
- src/components/Home/Tools/ToolCard/ToolCard.tsxFuente verificada 2026-09-07
- src/types/index.tsFuente verificada 2026-09-07
- src/constants/fallbackData.tsFuente verificada 2026-09-07
- src/data/schema.jsFuente verificada 2026-09-07
- cloudflare-worker/worker.tsFuente verificada 2026-09-07
- cloudflare-worker/urlHandlers/handleSubmitTool.tsFuente verificada 2026-09-07
- cloudflare-worker/utils.tsFuente verificada 2026-09-07