백엔드 없이 검증하기
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하는 것이 목적지가 받는 것이며, 검증 메타데이터가 더해집니다.
함께 보기
- 호스팅 인증 설정하기: 먼저 테스트 받은 편지함에 배선하는 안내.
- 호스팅 인증 통계: 전달 건강 읽기.
- 백엔드에서 검증하기: 서버를 돌릴 때의 대안.