웹게임에 랭킹을 붙이면 반드시 조작 시도가 들어옵니다. 브라우저 개발자 도구로 점수를 바꾸거나, 정답을 미리 읽거나, 스크립트로 수천 판을 돌리는 식입니다. GOOD LUCK을 만들면서 이런 시도를 구조적으로 막기 위해 적용한 방법을 정리합니다. 서버는 Cloudflare Workers, DB는 D1(SQLite)이고 프론트엔드는 빌드 없는 바닐라 자바스크립트입니다.1. 문 배치는 서버에만 존재한다가장 중요한 원칙입니다. 문 10개 중 어느 것이 PASS인지는 서버에서 만들고 서버에만 저장합니다. 브라우저가 받는 정보는 "PASS 6개, FAIL 3개, ITEM 1개가 남아 있다" 같은 개수와, 투시로 이미 드러난 문의 정체뿐입니다.// 클라이언트에 보내는 상태: 정체 모르는 문은 종류별 개수만expor..