01 / DECISION
何時值得加入這個 primitive
使用 Turnstile 為 form 或 action 增加 abuse friction,同時保留 application authentication 與 authorization。
02 / ARCHITECTURE
建立最小且站得住腳的路徑
針對正確 hostname 與 action render widget、token 只送一次、server-side 驗證、檢查 expected fields,並拒絕 expired 或 replayed token。
- 01先命名 contract
使用 Turnstile 為 form 或 action 增加 abuse friction,同時保留 application authentication 與 authorization。
- 02只加入一個 primitive
針對正確 hostname 與 action render widget、token 只送一次、server-side 驗證、檢查 expected fields,並拒絕 expired 或 replayed token。
- 03保留 failure evidence
測試 missing、malformed、expired、duplicate 與 wrong-host tokens,確認 protected action 不會在驗證前執行。
03 / REPRODUCE
有證據,再有信心
測試 missing、malformed、expired、duplicate 與 wrong-host tokens,確認 protected action 不會在驗證前執行。
curl -X POST https://challenges.cloudflare.com/turnstile/v0/siteverify 04 / BOUNDARY
Production boundary
Client-side success callback 不是證明;Turnstile 不負責決定誰能執行 privileged action。
05 / FIRST-PARTY SOURCES
讓第一方來源保持權威
產品行為、限制、價格與供應狀態會改變;採取行動前請重新核對這些來源。