Según su página de inicio: Supabase es una alternativa de código abierto a Firebase. Inicia tu proyecto con una base de datos Postgres, Autenticación, APIs instantáneas, Funciones de borde, Suscripciones en tiempo real, Almacenamiento e Incrustaciones vectoriales.
Subdominio
Básicamente, cuando se crea un proyecto, el usuario recibirá un subdominio de supabase.co como: jnanozjdybtpqgcwhdiz.supabase.co
Configuración de la base de datos
Estos datos se pueden acceder desde un enlace como https://supabase.com/dashboard/project/<project-id>/settings/database
Esta base de datos se desplegará en alguna región de AWS, y para conectarse a ella sería posible hacerlo conectando a: postgres://postgres.jnanozjdybtpqgcwhdiz:[TU-CONTRASEÑA]@aws-0-us-west-1.pooler.supabase.com:5432/postgres (esto se creó en us-west-1).
La contraseña es una contraseña que el usuario haya establecido previamente.
Por lo tanto, dado que el subdominio es conocido y se utiliza como nombre de usuario y las regiones de AWS son limitadas, podría ser posible intentar forzar la contraseña.
Esta sección también contiene opciones para:
Restablecer la contraseña de la base de datos
Configurar agrupamiento de conexiones
Configurar SSL: Rechazar conexiones en texto plano (por defecto están habilitadas)
Configurar tamaño de disco
Aplicar restricciones de red y prohibiciones
Configuración de la API
Estos datos se pueden acceder desde un enlace como https://supabase.com/dashboard/project/<project-id>/settings/api
La URL para acceder a la API de Supabase en tu proyecto será como: https://jnanozjdybtpqgcwhdiz.supabase.co.
Claves de API anónimas
También generará una clave de API anónima (rol: "anon"), como: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk que la aplicación necesitará usar para contactar con la clave de API expuesta en nuestro ejemplo en
Es posible encontrar la API REST para contactar con esta API en la documentación, pero los endpoints más interesantes serían:
</details>
Entonces, cada vez que descubras a un cliente usando supabase con el subdominio que se le otorgó (es posible que un subdominio de la empresa tenga un CNAME sobre su subdominio de supabase), podrías intentar **crear una nueva cuenta en la plataforma utilizando la API de supabase**.
### Claves de API secretas / de servicio
También se generará una clave de API secreta con **`role: "service_role"`**. Esta clave de API debe ser secreta porque podrá evitar la **Seguridad a Nivel de Fila**.
La clave de API se ve así: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`
### Secreto JWT
También se generará un **Secreto JWT** para que la aplicación pueda **crear y firmar tokens JWT personalizados**.
## Autenticación
### Registros
<div data-gb-custom-block data-tag="hint" data-style='success'>
Por **defecto**, supabase permitirá que **los nuevos usuarios creen cuentas** en tu proyecto utilizando los puntos finales de la API mencionados anteriormente.
</div>
Sin embargo, estas nuevas cuentas, por defecto, **necesitarán validar su dirección de correo electrónico** para poder iniciar sesión en la cuenta. Es posible habilitar **"Permitir registros anónimos"** para permitir que las personas inicien sesión sin verificar su dirección de correo electrónico. Esto podría otorgar acceso a **datos inesperados** (obtienen los roles `public` y `authenticated`).\
Esto es una muy mala idea porque supabase cobra por usuario activo, por lo que las personas podrían crear usuarios e iniciar sesión y supabase cobrará por ellos:
<figure><img src="../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
### Contraseñas y sesiones
Es posible indicar la longitud mínima de la contraseña (por defecto), requisitos (no por defecto) y prohibir el uso de contraseñas filtradas.\
Se recomienda **mejorar los requisitos ya que los predeterminados son débiles**.
* Sesiones de Usuario: Es posible configurar cómo funcionan las sesiones de usuario (tiempos de espera, 1 sesión por usuario...)
* Protección contra Bots y Abusos: Es posible habilitar Captcha.
### Configuración SMTP
Es posible configurar un SMTP para enviar correos electrónicos.
### Configuraciones Avanzadas
* Establecer tiempo de vencimiento para tokens de acceso (3600 por defecto)
* Establecer para detectar y revocar tokens de actualización potencialmente comprometidos y tiempo de espera
* MFA: Indicar cuántos factores MFA pueden inscribirse a la vez por usuario (10 por defecto)
* Conexiones Directas Máximas a la Base de Datos: Número máximo de conexiones utilizadas para la autenticación (10 por defecto)
* Duración Máxima de la Solicitud: Tiempo máximo permitido para que una solicitud de Autenticación dure (10s por defecto)
## Almacenamiento
<div data-gb-custom-block data-tag="hint" data-style='success'>
Supabase permite **almacenar archivos** y hacerlos accesibles a través de una URL (utiliza buckets de S3).
</div>
* Establecer el límite de tamaño de archivo para cargar (por defecto es 50MB)
* La conexión de S3 se da con una URL como: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
* Es posible **solicitar claves de acceso de S3** que están formadas por un `ID de clave de acceso` (por ejemplo, `a37d96544d82ba90057e0e06131d0a7b`) y una `clave de acceso secreta` (por ejemplo, `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`)
## Funciones de Borde
Es posible **almacenar secretos** en supabase también que serán **accesibles por funciones de borde** (pueden crearse y eliminarse desde la web, pero no es posible acceder a su valor directamente).