그들의 랜딩 페이지에 따르면: Supabase는 오픈 소스 Firebase 대안입니다. Postgres 데이터베이스, 인증, 즉시 API, 엣지 함수, 실시간 구독, 스토리지 및 벡터 임베딩으로 프로젝트를 시작하세요.
서브도메인
기본적으로 프로젝트가 생성되면 사용자는 **jnanozjdybtpqgcwhdiz.supabase.co**와 같은 supabase.co 서브도메인을 받게 됩니다.
데이터베이스 구성
이 데이터는 https://supabase.com/dashboard/project/<project-id>/settings/database와 같은 링크에서 접근할 수 있습니다.
이 데이터베이스는 일부 AWS 리전에서 배포되며, 연결하기 위해서는 다음과 같이 연결할 수 있습니다: postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres (이것은 us-west-1에서 생성되었습니다).
비밀번호는 사용자가 이전에 설정한 비밀번호입니다.
따라서 서브도메인이 알려진 것이고 사용자 이름으로 사용되며 AWS 리전이 제한적이기 때문에 비밀번호를 무작위 대입 공격할 가능성이 있을 수 있습니다.
이 섹션에는 다음과 같은 옵션도 포함되어 있습니다:
데이터베이스 비밀번호 재설정
연결 풀 구성
SSL 구성: 평문 연결 거부 (기본적으로 활성화됨)
디스크 크기 구성
네트워크 제한 및 차단 적용
API 구성
이 데이터는 https://supabase.com/dashboard/project/<project-id>/settings/api와 같은 링크에서 접근할 수 있습니다.
프로젝트에서 supabase API에 접근하는 URL은 다음과 같습니다: https://jnanozjdybtpqgcwhdiz.supabase.co.
anon API 키
또한 anon API 키(role: "anon")를 생성합니다, 예: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk 이 애플리케이션이 API 키에 접근하기 위해 필요합니다.
이 API에 연락하기 위한 API REST는 문서에서 찾을 수 있지만, 가장 흥미로운 엔드포인트는 다음과 같습니다:
</details>
그래서, 클라이언트가 부여받은 서브도메인으로 supabase를 사용하는 것을 발견할 때마다 (회사의 서브도메인이 그들의 supabase 서브도메인에 CNAME을 가질 가능성이 있음), **supabase API를 사용하여 플랫폼에 새 계정을 생성해 보십시오**.
### 비밀 / 서비스\_역할 API 키
**`role: "service_role"`**로 비밀 API 키도 생성됩니다. 이 API 키는 **Row Level Security**를 우회할 수 있기 때문에 비밀이어야 합니다.
API 키는 다음과 같습니다: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`
### JWT 비밀
**JWT 비밀**도 생성되어 애플리케이션이 **사용자 정의 JWT 토큰을 생성하고 서명**할 수 있습니다.
## 인증
### 가입
<div data-gb-custom-block data-tag="hint" data-style='success'>
기본적으로 supabase는 **새 사용자가 프로젝트에 계정을 생성**할 수 있도록 이전에 언급한 API 엔드포인트를 사용합니다.
</div>
그러나 이러한 새 계정은 기본적으로 **로그인하기 위해 이메일 주소를 확인해야** 합니다. 이메일 주소를 확인하지 않고도 로그인할 수 있도록 **"익명 로그인 허용"**을 활성화할 수 있습니다. 이는 **예상치 못한 데이터**에 대한 접근을 허용할 수 있습니다 (그들은 `public` 및 `authenticated` 역할을 받습니다).\
이는 supabase가 활성 사용자당 요금을 부과하기 때문에 매우 나쁜 아이디어입니다. 사람들이 사용자를 생성하고 로그인할 수 있으며 supabase는 이에 대해 요금을 부과할 수 있습니다:
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### 비밀번호 및 세션
최소 비밀번호 길이(기본값), 요구 사항(기본값 없음)을 지정하고 유출된 비밀번호 사용을 금지할 수 있습니다.\
기본 요구 사항이 약하므로 **요구 사항을 개선하는 것이 좋습니다**.
* 사용자 세션: 사용자 세션 작동 방식을 구성할 수 있습니다 (타임아웃, 사용자당 1세션...)
* 봇 및 남용 방지: Captcha를 활성화할 수 있습니다.
### SMTP 설정
이메일을 보내기 위해 SMTP를 설정할 수 있습니다.
### 고급 설정
* 액세스 토큰의 만료 시간 설정 (기본값 3600)
* 잠재적으로 손상된 새로 고침 토큰을 감지하고 취소하는 설정 및 타임아웃
* MFA: 사용자당 동시에 등록할 수 있는 MFA 요소 수를 지정 (기본값 10)
* 최대 직접 데이터베이스 연결: 인증에 사용되는 최대 연결 수 (기본값 10)
* 최대 요청 지속 시간: 인증 요청이 지속될 수 있는 최대 시간 (기본값 10초)
## 저장소
<div data-gb-custom-block data-tag="hint" data-style='success'>
Supabase는 **파일을 저장**하고 URL을 통해 접근할 수 있도록 합니다 (S3 버킷을 사용합니다).
</div>
* 업로드 파일 크기 제한 설정 (기본값 50MB)
* S3 연결은 다음과 같은 URL로 제공됩니다: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
* `access key ID` (예: `a37d96544d82ba90057e0e06131d0a7b`)와 `secret access key` (예: `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`)로 구성된 **S3 액세스 키를 요청**할 수 있습니다.
## 엣지 함수
supabase에 **비밀을 저장**할 수 있으며, 이는 **엣지 함수에 의해 접근 가능**합니다 (웹에서 생성 및 삭제할 수 있지만, 값에 직접 접근할 수는 없습니다).
<div data-gb-custom-block data-tag="hint" data-style='success'>
AWS 해킹 배우기 및 연습하기:<img src="../.gitbook/assets/image (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/image (1).png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="../.gitbook/assets/image (2).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/image (2).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
</details>
</div>