Saltar al contenido

Revise su proyecto de Supabase con 45 reglas de OWASP Top 10:2025 y más

Conecte un proyecto en solo lectura y obtenga un informe con nota y la corrección de cada hallazgo, en esta misma página.

Para equipos que crean con Lovable, Bolt, Cursor o v0 sobre Supabase. Gratis, sin registro.

Revisar mi proyecto de Supabase

Gratis, sin registro. Solo lectura: no se cambia nada en su proyecto.

  1. Conecte SupabaseApruebe el acceso de solo lectura en supabase.com.
  2. Ejecutamos 45 comprobacionesAcceso y RLS, inicio de sesión, storage y funciones, infraestructura. Solo el catálogo y los ajustes, nunca sus filas.
  3. Informe y un prompt para su agente de IAUna corrección para cada hallazgo y un prompt que pega en Cursor, Claude Code o Lovable. Solo se guarda si lo comparte.

Qué puede ver la comprobación

Leemos

  • Catálogo de la base de datos: tablas, indicadores de RLS, políticas, permisos, vistas, funciones, extensiones, roles y quién puede leer el Vault
  • Ajustes de auth: reglas de contraseña, confirmación de correo, MFA, URL de redirección
  • Storage: la lista de buckets, cuáles son públicos y sus límites de tamaño y tipo de archivo
  • Edge Functions: la lista y el ajuste de JWT de cada una
  • Ajustes del proyecto: versión de Postgres, copias de seguridad, SSL, restricciones de red, límite de filas de la Data API

Nunca leemos

  • Las filas de sus tablas
  • Claves de API y secretos: Supabase incluye algunos en las respuestas de configuración, y el análisis los descarta al llegar, sin guardarlos, registrarlos ni mostrarlos
  • Los archivos guardados en sus buckets
  • El código de su aplicación y su repositorio

Un informe solo se guarda cuando crea un enlace para compartirlo, como máximo 7 días. El acceso concedido se revoca justo después de la comprobación.

Lo que el acceso de lectura no puede comprobar

  • A06 Diseño inseguro y A10 Gestión incorrecta de condiciones excepcionales están en el código de su aplicación, no en los ajustes del proyecto.
  • Las dependencias del frontend (la parte de npm de A03) y una clave service_role incluida en el código del frontend. Revise su repositorio.
  • Reglas de acceso que viven solo en el código de la app o en Edge Functions, como una comprobación plan = 'pro' en el frontend. El análisis solo ve columnas que la propia base de datos usa en políticas, funciones y auth hooks, así que superar la comprobación de columnas de acceso editables no significa que esas columnas sean seguras.
  • Si un usuario con sesión iniciada puede leer las filas de otro usuario. Eso requiere una prueba con dos usuarios reales: cómo probar RLS en Supabase

Supabase Security Advisor y esta comprobación

PreguntaSecurity AdvisorEsta comprobación
Dónde se ejecutaEn el panel de Supabase, un proyecto cada vezEn esta página, tras un OAuth de solo lectura, para el proyecto que elija
Qué leeLints de la base de datosLos mismos lints como una sola comprobación, más auth, storage, Edge Functions, copias de seguridad y ajustes de red
Cómo se agrupan los resultadosPor lintPor OWASP Top 10:2025, indicando las categorías que no puede comprobar
Qué recibe para corregirloUn enlace a la documentación del lintSQL o el ajuste del panel por cada hallazgo, y un prompt para su agente de IA
Qué puede conservarLa lista en su panelUn PDF, o un enlace compartido que caduca a los 7 días

Cobertura de OWASP Top 10:2025

CategoríaComprobacionesEstado
A01 Control de acceso roto18Cubierta
A02 Configuración de seguridad incorrecta9Cubierta
A03 Fallos en la cadena de suministro de software2Parcial Solo la versión de Postgres y las extensiones. Las dependencias de npm están en su repositorio.
A04 Fallos criptográficos4Cubierta
A05 Inyección1Cubierta
A06 Diseño inseguro0No comprobable El diseño inseguro está en cómo funciona su aplicación, no en los ajustes.
A07 Fallos de autenticación8Cubierta
A08 Fallos de integridad de software o datos1Cubierta
A09 Fallos de registro y alertas de seguridad2Cubierta
A10 Gestión incorrecta de condiciones excepcionales0No comprobable La gestión de errores está en el código de su aplicación, que el acceso de lectura nunca ve.

Las 45 comprobaciones

ComprobaciónIDOWASPPeor caso
RLS desactivado en tablas expuestasrls_disabled_exposedA01Crítica
Políticas que permiten todas las filaspolicy_always_trueA01Alta
Políticas que confían en los metadatos del usuariopolicy_uses_user_metadataA01Alta
Políticas de escritura abiertas a visitantes anónimosanon_write_policiesA01Alta
Vistas que se saltan RLSviews_without_security_invokerA01Alta
Vistas materializadas o tablas foráneas en la APImatviews_or_foreign_tables_exposedA01Media
Funciones security definer invocables desde la APIsecurity_definer_executableA01Alta
Políticas de storage abiertas a visitantes anónimosstorage_objects_anon_policiesA01Alta
Buckets de storage públicospublic_bucketsA01Baja
Canales privados de Realtime sin protecciónrealtime_messages_rlsA01Alta
Permisos de escritura sin uso para visitantes anónimosanon_table_grants_writeA01Baja
Roles que eluden RLSroles_bypass_rlsA01Alta
Columnas de acceso que los usuarios con sesión pueden cambiarauthz_columns_writableA01Alta
Borrar y volver a insertar cambia una columna protegidadelete_insert_bypassA01Alta
Privilegios de tabla innecesarios para usuarios con sesiónauthenticated_table_grants_extraA01Baja
Privilegios por defecto que abren objetos nuevos a la APIdefault_privileges_api_rolesA01Baja
Funciones security definer que comprueban current_userdefiner_checks_current_userA01Media
Políticas sin rol o sin comandopolicies_without_to_or_forA01Baja
Hallazgos del Security Advisor de Supabaseadvisor_lintsA02Alta
Esquemas adicionales expuestos en la Data APIextra_exposed_schemasA02Alta
Comodines en las URL de redirecciónredirect_wildcardsA02Media
URL de redirección por http o a localhostinsecure_redirect_urlsA02Media
Inicios de sesión anónimos activadosanonymous_signins_enabledA02Media
CAPTCHA desactivado en el registro y el inicio de sesióncaptcha_disabledA02Media
Base de datos abierta a cualquier dirección IPnetwork_openA02Media
Buckets públicos sin límites de subidapublic_bucket_no_limitsA02Baja
Sin límite de filas en las respuestas de la Data APIpostgrest_max_rowsA02Media
Actualización de Postgres disponiblepostgres_upgrade_availableA03Media
Extensiones instaladasextensions_listedA03Info
SSL no obligatorio en las conexiones a la base de datosssl_enforcement_offA04Media
Tokens de acceso válidos más de una horajwt_expiry_longA04Media
Columnas de apariencia sensible legibles por visitantes anónimossensitive_columns_exposedA04Alta
Secretos de Vault legibles por roles de la APIvault_secrets_exposedA04Crítica
SQL dinámico construido con cadenasdynamic_sql_concatA05Media
Longitud mínima de contraseña cortapassword_min_lengthA07Alta
Protección contra contraseñas filtradas desactivadaleaked_password_protection_offA07Media
Confirmación de correo desactivadaemail_confirm_offA07Alta
Cambio de correo seguro desactivadosecure_email_change_offA07Media
Códigos de un solo uso válidos más de una horaotp_expiry_longA07Media
Ningún método multifactor activadomfa_unavailableA07Media
Rotación de refresh tokens desactivadarefresh_token_rotation_offA07Media
Cambio de contraseña sin reautenticaciónpassword_change_no_reauthA07Baja
Edge Functions sin verificación de JWTedge_functions_without_jwtA08Baja
pgaudit no instaladopgaudit_missingA09Info
No se encontraron copias de seguridadbackups_or_pitrA09Media

Preguntas

¿En qué se diferencia del Security Advisor de Supabase?

Los resultados del Security Advisor son una de las comprobaciones. El análisis añade los ajustes de auth, las políticas de storage, las Edge Functions, las copias de seguridad y los ajustes de red, agrupa todo según OWASP Top 10:2025 y da una corrección para cada hallazgo.

¿Es Supabase seguro por defecto?

La plataforma la mantiene Supabase, pero las reglas de acceso son suyas. Una tabla nueva creada con SQL simple tiene Row Level Security desactivado, y una política escrita como using (true) permite que cualquiera con la clave anon lea la tabla. El análisis busca exactamente estos ajustes.

¿Qué significa «RLS desactivado» y cómo se activa?

Con RLS desactivado en una tabla de un esquema expuesto, cualquiera con su clave anon puede leer todas las filas a través de la Data API. Actívelo con alter table public.su_tabla enable row level security; y añada después las políticas del acceso que quiera.

¿Es seguro que mi clave anon de Supabase esté en el navegador?

Sí, la clave anon (publicable) está pensada para ser pública. Solo puede hacer lo que permitan sus permisos y sus políticas de RLS, y por eso el análisis los comprueba. La clave service_role se salta RLS y nunca debe llegar al navegador.

Revise su propio proyecto

Gratis y de solo lectura. El informe aparece en esta página.

Revisar mi proyecto de Supabase