백엔드 없이 검증하기
Caputchin 토큰은 무언가가 그것을 확인하기 전까지 아무것도 증명하지 않습니다. 보통 그 무언가는 /siteverify를 호출해 요청을 신뢰할지 정하는 당신 자신의 백엔드입니다. 호스팅 인증은 그 단계를 Caputchin으로 옮깁니다: 당신의 폼이 Caputchin 포워더로 post하면, Caputchin이 토큰을 검증하고, 실패하는 것은 모두 버리고, 검증된 제출만 당신이 고르는 목적지로 전달합니다.
그것은 백엔드 확인과 같은 신뢰 결정을, 당신 쪽이 아니라 Caputchin 쪽에서 돌린 것입니다. 요점은 쓸 /siteverify 호출이 없고 서버에 둘 시크릿이 없다는 것인데, 서버가 없기 때문입니다.
호스팅 인증은 유료 기능으로, Alpha 이상에서 쓸 수 있습니다.
누구를 위한 것인가
호스팅 인증은 토큰을 확인하려고 백엔드를 돌리는 것이 프로젝트에 필요한 것보다 과한 경우를 위해 존재합니다.
| 당신이 | 왜 맞는가 |
|---|---|
| 정적 사이트(Webflow, Framer, CDN의 순수 HTML) | 폼을 받거나 /siteverify를 호출할 서버가 없음. |
| 노코드 빌더(Wix, Squarespace, Carrd) | 서버 측 검증 코드를 더할 수 없음. |
| 솔로 개발자나 소규모 팀 | 문의나 가입 폼이 백엔드를 세워 운영할 만한 가치가 아님. |
| 이미 백엔드를 돌리지만, 이 폼을 위해서는 아님 | 폼 하나를 포워더로 향하게 하고 스택의 나머지는 그대로 둘 수 있음. |
백엔드를 돌리며 거기서 검증하고 싶다면, 대신 백엔드에서 검증하기를 쓰세요. 둘은 계층이 아니라 대안입니다.
동작 방식
포워더는 제출을 전달하는 데 걸리는 순간 동안만 메모리에 들고 있습니다. post와 전달 사이에 저장이 없으며, caputchin-token 필드는 페이로드가 당신의 목적지에 닿기 전에 제거됩니다.
목적지
사이트 키별로 하나 또는 둘을 구성합니다. 둘 다 켜는 것은 흔한 패턴입니다: 처리용 웹훅으로 보내고 자신에게 복사본을 이메일로.
| 목적지 | 받는 것 |
|---|---|
| 웹훅 | 당신의 폼 필드에 Caputchin의 검증 메타데이터를 더해 지닌 JSON POST. |
| 이메일 | 폼 필드와 Caputchin이 제출을 검증했음을 알리는 푸터를 담은 평이한 이메일. |
전달은 서명되지 않습니다. 포워더 URL의 비밀성이 웹훅 호출을 인증하는 것이니, URL을 공개 저장소와 클라이언트 측 코드 밖에 두세요. 설정 튜토리얼이 정확한 웹훅 페이로드를 보여 줍니다.
무엇이 비공개로 유지되는가
호스팅 인증은 Caputchin의 나머지와 같은 방문자 데이터 없음 자세를 따릅니다:
- 제출은 결코 저장되지 않습니다. 그것들은 전달 동안 프로세스 메모리에 살다가, 그다음 사라집니다. 원한다면 웹훅 끝에서 당신 자신의 기록을 지으세요.
- 제출자에 대한 어떤 데이터도 수집되지 않습니다. IP도, User-Agent도, 지문도, 추적도 없음.
- 텔레메트리는 집계뿐입니다. Caputchin은 당신의 목적지가 건강한지 볼 수 있도록 전달 성공과 실패를 세지, 결코 어떤 제출의 내용도 세지 않습니다. 통계를 보세요.
고객이 제공한 URL을 안전하게 지키는 방법
Caputchin의 서버가 호출할 URL은 고전적인 서버 측 요청 위조 위험입니다. 포워더는 호스트가 사설, 루프백, 링크 로컬, 또는 클라우드 메타데이터 주소인 어떤 웹훅 URL이든, 당신이 그것을 저장할 때와 모든 전달 직전에 다시, 거부합니다. 차단되는 분류는:
| 분류 | 예시 |
|---|---|
| 루프백과 미지정 | 127.0.0.1, 0.0.0.0, ::1 |
| 사설 (RFC 1918) | 10.x.x.x, 172.16.x.x에서 172.31.x.x까지, 192.168.x.x |
| 링크 로컬과 클라우드 메타데이터 | 169.254.x.x, 특히 메타데이터 엔드포인트 169.254.169.254 |
| 캐리어급 NAT | 100.64.x.x에서 100.127.x.x까지 |
| 멀티캐스트와 예약됨 | 224.x.x.x 이상 |
| 내부 호스트명 | localhost와 .local, .localhost, 또는 .internal로 끝나는 모든 호스트 |
| 사설 IPv6 | 링크 로컬(fe80::/10)과 유니크 로컬(fc00::/7) 주소 |
차단된 주소를 위장하려는 인코딩도 잡힙니다: http://2130706433/ 같은 십진 정수 호스트나 http://0x7f000001/ 같은 16진 호스트(둘 다 127.0.0.1을 뜻함)는 거부됩니다. http와 https URL만 받으며; 다른 어떤 스킴도 거절됩니다. 포워더는 리디렉션 따라가기도 거부하니, 웹훅 엔드포인트가 호출을 내부 대상으로 튕길 수 없습니다. 차단된 URL은 특정한 것이 아니라 일반 오류로 드러나니, 네트워크를 탐색하는 데 쓸 수 없습니다. 따라서 당신의 웹훅은 공개 https URL에 살아야 합니다.
일부러 빠뜨린 것
- 제출 받은 편지함 없음. 대시보드에서 둘러볼 저장된 제출 이력이 없습니다.
- 자사 Discord, Slack, Telegram, SMS 어댑터 없음. 웹훅과 이메일뿐. 웹훅은 당신 쪽에서 그것들 어디로든 펼쳐 보낼 수 있습니다.
- 파일 업로드 없음. 포워더는 텍스트 필드를 받습니다; 파일을 지닌 제출은 거부됩니다.
- 페이로드 변환 없음. 폼이 post하는 것이 당신의 목적지가 받는 것이며, 검증 메타데이터가 더해집니다.
함께 보기
- 호스팅 인증 설정하기: 먼저 테스트 받은 편지함에 배선하는 안내.
- 호스팅 인증 통계: 전달 건강 읽기.
- 백엔드에서 검증하기: 서버를 돌릴 때의 대안.